我必须一行阅读一些用户信息。以这种格式:
name id rating
name是一个包含20个字符的字符串id是介于0000到9999之间的数字(因此我们必须将其读取为字符串)评分是介于a到z之间的单个字符
例如,对于读取的3名员工输入为:
john 0000 a
sarah 0001 b
mary 0005 b
我在for循环中使用scanf,但是不起作用!
scanf("%s %s %c" ,users[i].name ,users[i].id, &users[i].rating);
删除e
中的scanf
,它应该可以正常工作。
我尝试如下记录您的代码的近似版本:
#include <stdio.h>
struct user
{
char name[50];
char id[5];
char rating;
}users[3];
int main()
{
int i;
for(i = 0; i < 3; i++)
{
scanf("%s %s %c", users[i].name, users[i].id, &users[i].rating);
}
for(i = 0; i < 3; i++)
{
printf("%s %s %c\n", users[i].name, users[i].id, users[i].rating);
}
return 0;
}
上面的代码运行得很好,甚至可以打印用户详细信息。
EXPLANATION
在scanf
中,不需要传递的第一个参数e
。 scanf
中的第一个参数应为格式字符串,即您的情况下为"%s %s %c"
。我不确定,但是我认为您正在尝试将fscanf
样式syntax用于scanf
。 fscanf
将文件指针作为第一个参数,后跟格式字符串。我希望它能消除歧义并帮助您。