質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

1038閲覧

テキストファイルから構造体にデータを入れたいけどエラーが出る

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2017/09/17 02:19

編集2017/09/17 02:21

テキストファイルから構造体にデータを入れたいけどエラーが出る。
C:\MinGW\users\chap09\kadai>gcc -I. -o test test.c -Wall
test.c: In function 'main':
test.c:22:22: warning: unknown conversion type character 'U' in format [-
printf( "$B%U%!%$%k$,%!<%W%s$G$-$^$;$s(J\n" );
^
test.c:22:24: warning: unknown conversion type character '!' in format [-
printf( "$B%U%!%$%k$,%
!<%W%s$G$-$^$;$s(J\n" );
^
test.c:22:26: warning: unknown conversion type character '$' in format [-
printf( "$B%U%!%$%k$,%!<%W%s$G$-$^$;$s(J\n" );
^
test.c:22:28: warning: unknown conversion type character 'k' in format [-
printf( "$B%U%!%$%k$,%
!<%W%s$G$-$^$;$s(J\n" );
^
test.c:22:33: warning: unknown conversion type character '!' in format [-
printf( "$B%U%!%$%k$,%!<%W%s$G$-$^$;$s(J\n" );
^
test.c:22:36: warning: unknown conversion type character 'W' in format [-
printf( "$B%U%!%$%k$,%
!<%W%s$G$-$^$;$s(J\n" );
^
test.c:22:38: warning: format '%s' expects a matching 'char ' argument [
printf( "$B%U%!%$%k$,%
!<%W%s$G$-$^$;$s(J\n" );
テキストファイルはstarsdata.txt を下記とすると

Brad_Pitt 183.2 73.4
Tom_Cruise 170.1 67.2
Johnny_Depp 178.2 70.5
Will_Smith 188.0 78.3
Bruce_Willis 184.0 78.3
です。どうしたらいいでしょうか。よろしくおねがいします。
実行結果を
The tallest is Will_Smith(188.0cm)としたいのですが。

コード #include <stdio.h> #include <stdlib.h> #define MAXCNT 10 typedef struct { // 構造体の宣言 char name[16]; float height; float weight; } shape_t; int main() { int i, mt; FILE *fp; shape_t stars[MAXCNT]; // 構造体配列の宣言 if( (fp = fopen( "starsdata.txt", "r" )) == NULL ) { printf( "ファイルがオープンできません\n" ); exit( 1 ); } for( i = 0; i < MAXCNT; i++ ) { if( fscanf( fp, "%s %f %f\n" // 構造体配列への読み込み , stars[i].name, &stars[i].height, &stars[i].weight ) != 3 ) break; } fclose( fp ); // 本来なら、入力したデータを関数などに渡して使います // たとえば一番背の高い人を調べる関数 // int whoIsTallest( shape_t stars[], int num ) など // 関数との受け渡しは次回のTipsで ... mt = 3; // ここでは3が返されたことにします printf( "The tallest is %s(%.1fcm)\n", stars[mt].name, stars[mt].height ); }
^

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

エラーメッセージをみる限り、printf( "ファイルがオープンできません\n" );の部分で、日本語の文字コードがおかしくなってエラーとなっています。

特に、Windowsのコンソール環境は文字コードの扱いがややこしいので、「コンソール自体の文字コード」「ソースコードの文字コード」「入力ファイルの文字コード」などの、入念な確認が必要です。

投稿2017/09/17 02:26

maisumakun

総合スコア145121

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/09/17 02:35

maisumakunさんありがとうございます。実行できたのですが、次のような表示で思い道理の結果になりません。 ”C:\MinGW\users\chap09\kadai>test ファイルがオープンできません ” よろしくおねがします。
退会済みユーザー

退会済みユーザー

2017/09/17 02:49

ソースコードの文字コードの手直しでコンパイルできました。コードのチェックで正常に表示されまし。 maisumakunさんありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問