这个段错误是什么意思啊?

img

img

img

img


为什么加上scanf("%d",&m);之后就会出现段错误,删去就不会?

scanf 返回成功读取的数据个数, 你没有使用它的返回值, 所以会有 Warning;
对于 scanf("%d", &n), 如果输入正确的内容, 则返回 1, 表示成功读入 1 个数据;
如果输入错误的内容, 则返回小于 1 的值, 此时应该立刻使用 scanf("%*s") 将缓冲区清空, 否则将导致后续的循环都出现问题;
我们可以这样写:

if (1 == scanf("%d", &n)) {
  // ...
} else {
  n = scanf("%*s"); // 此处一定为0.
}