#include<stdio.h>int main(){ int a;char b; scanf("%d",&a); scanf("%[^.]",&b); printf("%d",a); printf("%c1",b); return 0; } 请问为什么我这个代码中的a得不到正确的结果,如:输入6回车输入.回车最后得到得结果为a=0;这是什么原因?
1 回答
已采纳
onemoo
TA贡献883条经验 获得超454个赞
原因是用 %[] 的那句 scanf 用错了。
%[] 这个格式化指示符对应的其实是字符串,而非字符。或者说,它在匹配结束后,会再存一个 null 字符进去(用于构成字符串结尾)。
代码中你错误地只用一个字符去接收 %[] 的匹配结果,而最后的 null 字符仍会被写到 b 的后面,这样就写越界了。
至于为什么你看到 a 的结果为 0? 很可能在你编译出的程序中 a 的内存位置刚好在 b 后面,所以 a 中的结果被覆盖了。
- 1 回答
- 0 关注
- 758 浏览
添加回答
举报
0/150
提交
取消