- ベストアンサー
テキストファイルを読み取るプログラム
予め、作っておいたテキストファイルから読み取って コマンドプロント上に表示したいのですがどのような方法で 行えばいいのでしょうか??調べてみたところfsacnfを使うようですが 使い方がよくわからなくて… テキストファイルには name : tarou , age : 10 name : hanako , age : 12 と書かれています。 よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
「テキストファイルから読み取ってコマンドプロント上に表示」する プログラムを書いてみました。 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)
- JaritenCat
- ベストアンサー率37% (122/322)
項目ごとに分けて読みたいなら、こんな感じ。 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)
すぐ近く(昨日)の過去ログに参考になるのがあるじゃないすか。 出力先はファイルだけど。 読み込んだテキストを成型する必要がない 1行丸投げならfscanfを使う必要はありません。
- koko_u_
- ベストアンサー率18% (459/2509)
>コマンドプロント上に表示したい 具体的にはどうなって欲しいのでしょうか? コマンドラインでそのプログラム foo を $ ./foo と実行した後の状態を補足にどうぞ。