fscanf阅读换行符

时间:2011-09-15 17:16:21

标签: c scanf

我一直在慢慢追查我的程序错误。我把它缩小到了这个范围。 我有一个用户输入

fscanf(stdin, "%c %c %d", &car, &dir, &amount);

我第一次访问它时工作正常,正确读取值。第二次在循环中它将\n读入汽车而不是我给它的字符。然后它会将车内的内容读入目录。金额读数正确。当汽车被传递到其他功能计数时,我最终得到了一个段错误。

是从上一行读取\ n还是什么?

1 个答案:

答案 0 :(得分:1)

"%c"转换说明符不执行通常的空白修剪 尝试在第一个转换说明符之前添加空格

if (fscanf(stdin, " %c %c %d", &var, &dir, &amount) != 3) { /* error */ }

或者,或许更好,阅读一整行并在程序中解析它

char buf[1000];
fgets(buf, sizeof buf, stdin);
parse(buf);