我一直在慢慢追查我的程序错误。我把它缩小到了这个范围。 我有一个用户输入
fscanf(stdin, "%c %c %d", &car, &dir, &amount);
我第一次访问它时工作正常,正确读取值。第二次在循环中它将\n
读入汽车而不是我给它的字符。然后它会将车内的内容读入目录。金额读数正确。当汽车被传递到其他功能计数时,我最终得到了一个段错误。
是从上一行读取\ n还是什么?
答案 0 :(得分:1)
"%c"
转换说明符不执行通常的空白修剪
尝试在第一个转换说明符之前添加空格
if (fscanf(stdin, " %c %c %d", &var, &dir, &amount) != 3) { /* error */ }
或者,或许更好,阅读一整行并在程序中解析它
char buf[1000];
fgets(buf, sizeof buf, stdin);
parse(buf);