2017-03-17 37 views
-3

如果我不知道將會有多長時間,我將如何從文件讀取信息到變量。文件C編程(從文件讀取信息到變量)

例子:

student name 
class grade credits 
class grade credits 
class grade credits 

我將如何保存這些信息從該文件,如果改變的類的數量。我需要將這些信息打印到屏幕上,同時使用學分和學分數來計算學生GPA。

+0

你的代碼在哪裏?輸入文件的實際示例在哪裏?預期產出的例子在哪裏?當問一個問題時,要清楚它是運行時還是編譯時問題。提供必要的詳細信息,如'幫助'部分所述。 – user3629249

回答

1

提議fluter,fgets將允許您逐行讀取文件中的行。 getline是另一個(更好的恕我直言)解決方案,它的manpage提供了一個簡單的使用示例。

然後在閱讀循環中,您有幾個選項。我建議你在線上應用sscanf閱讀。 它返回讀取的項目數。在這種簡單的情況下,我通常嘗試使用不同的格式字符串掃描行,並檢查讀取的項目數以驗證行匹配。

例如,你可以使用類似:

  • 「%S」 爲格式字符串學生姓名線
  • 「%s%C%d」 爲格式字符串級線

而且我建議你計算循環內的GPA,這樣,如果我是正確的,你不應該存儲分數。

0

通常的做法是掃描輸入文件,直到遇到文件末尾或EOF,這樣您就知道您已經到達文件末尾。 事情是這樣的:

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