• ベストアンサー

ファイルからの読み込み

fscanfを使ってファイルの中身を読み込みたいのですが、ファイルの中身の長さが統一されていない場合どうしたらよいでしょうか? 読み込むファイルの中身 A d 1 B 3 2 G 5 1 2 B 6 G H 5 2 5 今まではファイルの中身の各行の文字数が全部3つだったので fp=fopen(A.txt,"r"); while(fscanf(fp,"%s %s %s",data,data+1,data+2)!=EOF) { printf("%s?n",data); }としていました。わかりにくい文章ですいません。

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

  • ベストアンサー
  • aris-wiz
  • ベストアンサー率38% (96/252)
回答No.2

> fgetsで行単位に切り出し,sscanfで分離する fscanfもsscanfも読み込みを行う対象が、 入力ストリームか文字列バッファかの違いを除いて差異はありません ので今回の解決作にはならないかと。。。 >中身の各行の文字数が全部3つだったので 文字と文字の間に決まりがあるのならば、 fgetsで1行分のバッファを取得し、 strtokか自作の関数で1文字ずつ切り出せば良いと思います。

その他の回答 (1)

回答No.1

行が重要な概念であるのであれば,fgetsで行単位に切り出し,sscanfで分離するのが現実的だと思います。 sscanfの戻り値は代入された要素数なので,その値も使えば不定でもある程度は処理が可能ですよ。

関連するQ&A