我想寫一個程序,從文本文件中讀取一行,並將語言方程打印到數學文件中,但由於某些原因,它僅讀取第二行和最後一行TXT文件。不讀每行文本文件
文本示例
subtraction,3,57
multiplication,90,46
division,26,7
division,26,0
代碼
int main()
{
char name[21], namecopy[21];
char *nc, com = 100;
int num1, num2, p, i;
FILE *file;
file = fopen("C:\\hw10.txt", "r");
strcpy(namecopy, name);
while (fgets (namecopy,21,file)!=NULL)
{
fscanf(file, "%[^,]%*c %i%*c %i%*c", &name, &num1, &num2);
printf("%s %i %i\n", name, num1, num2);
if(strcmp(name, "subtraction") == 0)
{
p = num1-num2;
printf("%d - %d = %i \n", num1, num2, p);
}
if(strcmp(name, "addition") == 0)
{
p = num1+num2;
printf("%d + %d = %i \n", num1, num2, p);
}
if(strcmp(name, "multiplication") == 0)
{
p = num1*num2;
printf("%d x %d = %i \n", num1, num2, p);
}
if(strcmp(name, "division") == 0)
{
if(num2==0)
printf("undefiend\n");
else
{
p = num1/num2;
printf("%d/%d = %i \n", num1, num2, p);
}
}
}
char ch=getchar();
return 0;
}
在取而代之的是調用fgets,接着是fscanf,你不應該單獨調用fscanf,還是fgets跟在字符串fgets上的sscanf讀取? – goji
fgets(namecopy,21,file)!= NULL; ----- 你用namecopy字段中的值讀取的內容是什麼? –
strcpy(namecopy,name);這條線似乎也毫無意義,您將未初始化的名稱複製到namecopy中,然後用fgets覆蓋它。 – goji