我必須製作一個用C語言編寫的程序,它將讀取和打印文本文件中的一些內容。從文本文件中讀取和打印
但是下面的程序的2個函數由於某種原因不會工作。案例3正常工作。但另外兩個打印沒有或只有1個名字。這怎麼可能,我該如何解決這個問題。
我沒有得到任何錯誤順便說一句。
#include <stdio.h>
main()
{
FILE *list;
int number, menu, total;
char name[20];
list = fopen("C:\\PATH\\TO\\FILE", "r");
printf("Menu: \n"\n);
printf("[1] Positive total: \n");
printf("[2] Negative total: \n");
printf("[3] Total: \n");
printf("[4] Quit \n\n");
printf("Choose: 1,2,3 or 4:\n");
scanf("%d", &menu);
while (menu!=4)
{
fscanf(list, "%d%s%d", &number, name, &total);
switch(menu)
{
case 1: printf("Negative total \n");
while(!feof(list))
{
if (total<0)
{
printf("-%6d%-15s%6d\n", number, name , total);
fscanf(list, "%d%s%d", &number, name, &total);
}
}
break;
case 2: printf("Positive: \n");
while(!feof(list))
{
if (total>=0)
{
printf("-%6d%15s%6d\n", number, name , total);
fscanf(list, "%d%s%d", &number, name, &total);
}
}
break;
case 3: printf("Total: \n");
while(!feof(list))
{
printf("-%6d%15s%6d\n", number, name , total);
fscanf(list, "%d%s%d", &number, name, &total);
}
break;
}
rewind(list);
printf("\nChoose again, 1, 2, 3, 4: ");
scanf("%d", &menu);
}
printf("End of Program");
fclose(list);
return 0;
}
文本文件包含數字,名字,他們總計金額(你可以把它看作是銀行的系統)。這裏是文本文件:
5892 John +7250
5893 Kate -94
5894 Mike +324
5895 Jack +9570
5896 Anne +800
另請注意,使用'feof()'可能導致最後一行被重複,因爲當您讀取文件的最後一個字節時EOF條件未設置,但當您嘗試讀取*之後的字節* – twalberg