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

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

ただいまの
回答率

90.52%

  • C

    3670questions

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

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

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 357

sanchu52

score 140

テキストファイルから構造体にデータを入れたいけどエラーが出る。
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 );
}


^

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/17 11:35

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

    キャンセル

  • 2017/09/17 11:49

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

    キャンセル

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

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • C

    3670questions

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