我有這個程序的類,我們只需要證明我們可以從文本和二進制文件讀取,寫入和填充數組。我沒有用二進制文件發佈很多,但文本文件正在給大腦時間帶來痛苦。使用fgets從文本文件填充數組
我相信這個小小的代碼是責怪。 userInputText [MAXSIZE]是一個char數組(MAXSIZE定義爲100000),當程序處於此時,textCount和textCounter都被初始化爲零。
textPointer = fopen("textFile.txt", "r");
if (textPointer)
{
while (fgets(userInputText, sizeof(userInputText), textPointer) != NULL)
{
sscanf(userInputText, "%d", &textCount);
userInputText[textCounter] = textCount;
textCounter += 1;
}
}
當用戶第一次運行程序時,程序的這一部分被跳過,用戶被要求創建並寫入文本文件。用戶輸入整數並將它們寫入文本文件並存儲在userInputText中,並顯示在程序結尾的屏幕上。所有這些工作都很好,每次運行程序時都會正確地附加文本文件。我已經嘗試過在上面的代碼中可以想到的每個組合。我嘗試過使用fopen(r +),sizeof(int和MAXSIZE),試驗%d。在我的fprintf部分後面的程序中,我將「\ n」設置爲分隔符,但我也嘗試刪除它。我把fgets換成了fread。我已經到了一個類似於狒狒拋出問題的地步。
我不希望人們認爲我很懶惰,尋找一個簡單的答案,弱智可能但不懶惰。
有什麼建議嗎?
感謝,
邁克
運行該程序時實際發生了什麼? – Hassan
你究竟在做什麼*做*?這段代碼嘗試從FILE *流的格式化文本輸入中讀取一個整數,然後出於某種奇怪的原因,您更新了用於行處理的*相同的文本緩衝區* ,但現在用'int'轉換結果。如果這是你的意圖(我看不出它是怎麼回事),那就這樣吧,但是你會意識到你正在吹走你剛讀完的每一行新書時保存的價值,對吧? – WhozCraig
當我第一次運行程序時。它要求用戶輸入數字。我在while循環中執行scanf(%d),直到用戶輸入-999。當用戶處於循環中時,數字被存儲到userInputText []中,並且計數器遞增以獲得下標。然後我使用fprintf(textPointer,「%d \ n」,textTemp);將文件寫入文本文件。數組和文本文件都很好,直到這一點。它的下一個程序運行的地方有問題,因爲在允許用戶輸入更多數字之前,我必須根據文本文件填充數組。 –