我使用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
为什么?
答案 0 :(得分:1)
在%c
中的每个sscanf
之前添加空格。这样做是为了丢弃stdin
中的所有空格。正如\n
这些空格一样,stdin
中会出现空格,下一次调用fgets
和%c
时会有空格,因为它也是一个字符。同时使用%lf
代替double
而不代表%f
。%f
代表float
。