我需要知道如何使用fgets讀取文件中的所有記錄我不懂如何用while循環讀取所有記錄。因爲如果我寫這樣的循環,我得到運行時錯誤什麼可能是錯誤?謝謝。Fgets和EOF在C
N=15;
sakums:
struct studenti students[N];
char line[100];
char *ptk; char * end; int i;int sorted;
int g=0,ch,count=0;
int n;
int choice;
FILE *fails_st = fopen("studenti.txt", "r+");
printf("\n1.Show data ");
scanf("%d",&choice);
if(choice==1)
while (fgets(line, sizeof(line), fails_st) != NULL)
{
students[i].Nr = strtol(line, &end, 10);
ptk = strtok(line, " ");
ptk = strtok(NULL, " ");
strcpy(students[i].name, ptk);
ptk = strtok(NULL, " ");
strcpy(students[i].surname, ptk);
ptk = strtok(NULL, ".");
end = (ptk + strlen(ptk));
students[i].dzd.da_day = strtol(ptk, &end, 10);
ptk = strtok(NULL, ".");
end = (ptk + strlen(ptk));
students[i].dzd.da_month = strtol(ptk, &end, 10);
ptk = strtok(NULL, " ");
end = (ptk + strlen(ptk));
students[i].dzd.da_year = strtol(ptk, &end, 10);
ptk = strtok(NULL, " ");
students[i].dzimums = *ptk;
}
fclose(fails_st);
printf("Student list\n");
printf("%d. %s %s %d.%d.%d %c\n", students[i].Nr, students[i].name,
students[i].surname, students[i].dzd.da_day,
students[i].dzd.da_month, students[i].dzd.da_year,
students[i].dzimums);
我的第一個循環是這樣的,但只檢查記錄不斷計數。
for(i=0; i < N && fgets(line, sizeof(line), fails_st) != NULL; i++)
您是要求我們調試代碼還是要求我們教您如何將數據讀入文件?如果你想讓我們調試你的代碼,我們至少需要知道'N'是什麼以及你提供了哪些數據。 (另外,如果你希望我們調試你的代碼,首先刪除任何不相關的代碼,測試一下你可以刪除哪些代碼,最有可能的是你自己會發現這個bug。) –