2017-03-17 21 views
-3

どれくらいの時間がかかるかわからない場合は、ファイルから変数に情報を読み込む方法を教えてください。ファイルのCプログラミング(ファイルから変数への情報の読み込み)

例:

student name 
class grade credits 
class grade credits 
class grade credits 

クラスの数が変化した場合にどのように私はこのファイルからこの情報を保存します。私は学生のGPAを計算するためにグレードとクレジットの数を使用しながら、この情報を画面に印刷する必要があります。

+0

あなたのコードはどこですか?入力ファイルの実際の例はどこですか?期待される出力の例はどこですか?質問をするときは、それがランタイムかコンパイル時の問題かどうかを確認してください。 「ヘルプ」セクションに記載されているように、必要な詳細を入力します。 – user3629249

答えて

1

fgetsはあなたが行毎にファイルを読み込むことができます。 getlineは別の(より良いIMHO)ソリューションです。manpageは簡単な使用例です。

読み取りループの内部には、いくつかのオプションがあります。私はあなたにsscanf行に適用することをお勧めします。 読み込んだ項目の数を返します。このような単純なケースでは、通常、異なる書式文字列で行をスキャンし、行が一致しているかどうかを確認するために読み取られた項目の数を調べます。

たとえば、次のようなものを使用することができます

  • 「%s」の生徒の名前行のフォーマット文字列として
  • グレードライン
  • をするためのフォーマット文字列として「%sの%のC%dを」

ループ内のGPAを計算することをお勧めします。この場合、正しいならば、グレードを保存する必要はありません。

0

一般的なやり方は、入力ファイルがファイルの最後またはEOFに達するまでスキャンして、ファイルの最後に到達したことを知ることです。このような 何か:fluterによって提案されているよう

FILE *fp = fopen("grade.txt", "r"); 
if (!fp) { exit(1); } 
char line[1024]; 
char name[1024]; 
char *s; 
s = fgets(line, sizeof line, fp); 
if (!s) { fclose(fp); exit(0); } 
strcpy(name, line); 
do { 
    s = fgets(line, sizeof line, fp); 
    // convert line to grade, to integer or double as you want 
} while (s != NULL); 
// compute the GPA 
関連する問題