以下程序有什么问题?

时间:2014-09-28 11:07:19

标签: c

我使用fgets()和sscanf()组合来读取两个字符。但有些事似乎不起作用。谁能告诉我这里有什么问题?

    puts("Enter two floats: ");
    fgets(buf, 10, stdin);
    sscanf(buf,"%lf%lf",&fx,&fy);
    printf("Values are %lf and %lf\n", fx, fy);

    puts("Enter two characters: ");
    fgets(buf, 10, stdin);
    sscanf(buf, "%c%c",&cx, &cy);
    printf("Values are %c and %c\n", cx, cy);

该代码提供以下输出:

Enter two floats:
4.5 5.5
Values are 4.5 and 5.5
Enter two characters:
s f
Values are s and

为什么?

1 个答案:

答案 0 :(得分:1)

%c中的每个sscanf之前添加空格。这样做是为了丢弃stdin中的所有空格。正如\n这些空格一样,stdin中会出现空格,下一次调用fgets%c时会有空格,因为它也是一个字符。同时使用%lf代替double而不代表%f%f代表float