如果 scanf 遇到不匹配,我想给出一条错误消息,然后继续读取其余的输入。如果其中一个输入格式不正确,我当前的代码将进入无限循环。
预期输入:
101,Betty,Hay,123 Main St.,23
234,Sheila,Benn,937 Ash Ave.,46
384,Ron,Jewell,3991 Cedar Ave.,30
291,Bill,Read,83 Crescent St.,19
103,Alexander,Ott,100 2nd St.,21
115,Tricia,Munson,585 Oxen Ave.,28
118,Sam,Munson,585 Oxen Ave.,35
110,Valerie,Parker,1513 Copper Rd.,37
代码:
#include <stdio.h>
int main()
{
int sum = 0;
int count = 0;
while (1)
{
int id;
char first[80], last[80], addr[80];
int age;
scanf("%d,%80[^,],%80[^,],%80[^,],%d", &id, first, last, addr, &age);
if (feof(stdin)) break;
printf("id=%d first=%s last=%s addr=%s age=%d\n",
id, first, last, addr, age);
sum += age;
count++;
}
printf("Average age is %f\n", (float)sum / count);
return 0;
}
我试图通过将 scanf 放在 if 语句中将其与预期的读取次数进行比较来解决此问题,这适用于显示错误消息,但无助于读取输入的其余部分。有没有办法跳到下一行输入?