1, 2, 3 // a.txt
該程式用于打開檔案,計算數字和讀取txt檔案的第一個字母。當我嘗試除錯時,digit_char = fgetc(fp);無法正常作業。digit_char是空的。我使用動態分配來保存陣列中的數字。沒有警告,但答案不是我想要的。( digit_char= 1)

FILE* fp;
char digit_char;
int NUM=1;
fp = fopen("a.txt", "r");
char ch;
do
{
ch = fgetc(fp);
if (ch == ',')
{
NUM ;
}
} while (ch != EOF);
int* arr;
arr = (int*)malloc(sizeof(int) * NUM);
digit_char = fgetc(fp); // error...?
free(arr);
fclose(fp);
======
以下代碼fgetc()運行良好。1保存在digit_char
FILE* fp;
char digit_char;
int NUM=3;
fp = fopen("a.txt", "r");
int arr[3];
digit_char = fgetc(fp);
//free(arr);
fclose(fp);
return 0;
我不知道為什么第一個程式不能很好地作業..
uj5u.com熱心網友回復:
一旦你到達EOF,你就真的在檔案的末尾。沒有什么可讀的了。
rewind在嘗試再次讀取之前,您需要到檔案的開頭。
或者至少尋求更早的位置。
請注意,無法在標準輸入流中倒帶或查找stdin。要在用戶按下“檔案結束”按鈕序列后繼續閱讀stdin,您需要清除“錯誤”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/516689.html
標籤:C
上一篇:如何在C中重復回圈
