• ベストアンサー

テキストファイルを読み取るプログラム

予め、作っておいたテキストファイルから読み取って コマンドプロント上に表示したいのですがどのような方法で 行えばいいのでしょうか??調べてみたところfsacnfを使うようですが 使い方がよくわからなくて… テキストファイルには name : tarou , age : 10 name : hanako , age : 12 と書かれています。 よろしくお願いします。

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

  • ベストアンサー
  • jjk65536
  • ベストアンサー率59% (66/111)
回答No.3

「テキストファイルから読み取ってコマンドプロント上に表示」する プログラムを書いてみました。 fscanf()で。 #include <stdio.h> int main(void) { FILE *fp; char buf[1024]; fp = fopen("text.txt", "r"); if(!fp) return -1; while(fscanf(fp, "%s", buf) != EOF){ printf("%s ", buf); } fclose(fp); return 0; } 一応表示されますが、ご覧のようにfscanfじゃ改行が処理されません。 ./oshiete name : tarou , age : 10 name : hanako , age : 12 fgetsにするともうちょっとマトモです。 (while文を「while(fgets(buf, 1024, fp)){」に変更) ./oshiete2 name : tarou , age : 10 name : hanako , age : 12 #2様のように、私もfscanfはお勧めしません。 (改行の問題を解決する方法はあるものの…) 質問の意図を読み違えていたらすみません。

その他の回答 (3)

回答No.4

項目ごとに分けて読みたいなら、こんな感じ。  while(fscanf(fp,"name : %s , age : %d \n",name,&age)!=EOF) {   printf("[%s][%d]\n",name,age);  } 1行まるごと読みたいなら、こんな感じ。  while(fscanf(fp,"%[^\n]\n",buf)!=EOF) {   printf("[%s]\n",buf);  } scanf系はエラー処理が面倒なのでお勧めしません。

  • stingy
  • ベストアンサー率37% (144/379)
回答No.2

すぐ近く(昨日)の過去ログに参考になるのがあるじゃないすか。 出力先はファイルだけど。 読み込んだテキストを成型する必要がない 1行丸投げならfscanfを使う必要はありません。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>コマンドプロント上に表示したい 具体的にはどうなって欲しいのでしょうか? コマンドラインでそのプログラム foo を $ ./foo と実行した後の状態を補足にどうぞ。

関連するQ&A