1 scanf吃空格和回车
现象
在我使用scanf的时候,经常会遇到那样的问题,就是我逻辑没错,也没报错,但是结果就是错的。
char a, b;
scanf("%c%c",%a,%b);
scanf("%c%c",%a,%b);
输入
q w
e r
我们最后打印ab的结果不会是er,而是一个空的和r
原因
scanf在会用回车来判断是否输入完毕,但是最后的回车会被保存到缓存区域,在下一次就会被使用
解决
- 使用fflush(stdin)清理缓存
- 在使用scanf的时候,用
scanf(" %c%c");
就是在下一个scanf的最后面加上一个空格,这个的作用就是吸收一个空符号,然后舍弃,不会对正常的字符产生干扰,使用\n\t也是一样的效果
2 栈里的空间过大,造成segmentation fault段错误
这个问题就是你在栈里面的空间用的太多了,比如在函数里面定义了一个很大的数组,或者在for和if里面用了太多的空间
可以将那个很大的数组放在主函数外面,作为一个全局变量去使用