• ベストアンサー

ファイル入出力について

姓名判断のプログラムを作ろうと思い、次の様な漢字ファイルをメモ帳で作ったのですが、 花,7[リターン] 木,4[リターン] 絵,12[リターン] ・・・ このファイルから花や木や絵の部分をchar型配列に7,4,12などの画数の部分をint型配列に入れたいのですが、どのようにしたらよいのかわかりません。fscanfを使おうとしても1行分文字列として認識されてしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • gimmick
  • ベストアンサー率49% (134/270)
回答No.1

fscanfを使うのであれば、コンマではなくスペースで区切ったほうが楽だと思います。ファイルからの読み込みは次のようにすればできます。 #include<stdio.h> #include<stdlib.h> #define MAX 32 int main(void) {   char kanji[MAX][3]; /*漢字*/   int kakusu[MAX];   /*画数*/   int i=0, j=0;   FILE *fp;   /*読み込み*/   fp=fopen("kanji.dat", "r");   if(fp == NULL)     exit(1);   while( fscanf(fp, "%s%d", kanji[i], &kakusu[i]) != EOF ){     i++;   }   fclose(fp);   /*確認*/   while(j<i){     printf("%2d %s %2d\n", j, kanji[j], kakusu[j]);     j++;   }   return 0; }

albrex
質問者

お礼

遅くなってしまいすいません。 あの後、ファイル構造を変えて上記プログラムを実行したところ みごとにはいりました。 ありがとうございました。