scanf()没有返回正确数量的参数

时间:2013-06-09 13:16:24

标签: c scanf

我正在尝试编写一个简单的程序,该程序将以这种格式输入有关人员的信息:

 name,age,gender,info

以下是目前的代码:

 #include <stdio.h>

 int main() {
    char name[10];
    int age;
    char gender[2];
    char info[50];

    while(scanf("%9s,%i,%1s,%49[^\n]", name, &age, gender, info) == 4)
    puts("Success");

    return 0;
 }

所以在终端我输入的内容如下:bob,10,M,likes cheese但它没有打印出成功消息,所以我猜在while循环中的条件失败了。

所以添加此代码以检查参数的数量:

int i = scanf("%9s,%i,%1s,%49[^\n]", name, &age, gender, info);
printf("%i", i);

当我进入bob时,10,M,再次喜欢奶酪,它打印出来1.

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:4)

%9s将消耗输入,直到找到空格,达到指定的长度(9)或字符串的结尾,在这种情况下,将消耗bob,10,M,而不是bob 1}}。

Test

请尝试%9[^,],%i,%1s,%49[^\n]

Test

此外,由于性别为1个字符,您也可以将其设为char并使用%c代替%1s(除非它是可选的)。

Test