2015-02-09 38 views
1

我寫了一個程序來保存足球隊的統計數據。我將統計信息保存在一個文件中,並將所有匹配記錄在另一個名爲「record.txt」的文件中。在寫入文件時獲取不同的輸出

在我record.txt文件,書寫格式爲:

[對手名稱] [當前日期]

我現在面臨的問題是,有時我得到「對手的名字」在一行中‘日期’,有時日期在新線

這裏開始就是我得到 pic of output file

的圖像

這裏是我的代碼

time_t rawtime; 
struct tm * timeinfo; 
char buffer [80]; 

time (&rawtime); 
timeinfo = localtime (&rawtime); 
strftime (buffer,80,"%d/%m/%y",timeinfo); 

/* current date acquired */ 
FILE *history; 

history = fopen("record.txt", "a"); 

char opponent[10]; //opponent name 

printf("Opponent Name: "); 
fgets(opponent, 10, stdin); 
fprintf(history, "Opponent: %s %s\n", opponent, buffer); 

fclose(history); 
+0

請在此重新發布代碼和示例輸出,不是每個人的網絡都允許pastebin或imgur。 – IllusiveBrian 2015-02-09 17:35:28

+0

你根本不執行任何檢查,'fopen()'/'fgets()'可能會失敗,你必須檢查它。 – 2015-02-09 17:36:39

+0

我已經發布了代碼。不幸的是,我不允許張貼圖片 – 2015-02-09 17:37:36

回答

3
fgets(opponent, 10, stdin); 

注意fgets()讀取,當你按下stdin進入換行符,和你沒有抑制它。如果你想在同一行中的兩個字符串抑制新行,如

size_t n = strlen(opponent); 
if (n > 0 && opponent[n -1] == '\n') 
    opponent[n - 1] = '\0'; 
+0

@iharob是的,它可以被做想要帶出什麼bug。 – Gopi 2015-02-09 17:40:01

+0

當然,如果你建議檢查'fopen()'/'fgets()'返回值也會很好。現在這是一個更好的答案。 – 2015-02-09 17:40:52

+0

這工作!謝謝。不知道我必須檢查換行符。順便說一句,爲什麼我有時會得到正確的格式? – 2015-02-09 17:43:50

相關問題