使用平台:windows win7 32bit 专业版 + devc++ beta5
小弟在devc++中使用 scanf函数,
原code如下:
int main()
{
char ch[10];
printf("keyin string:");
scanf("%s",ch);
printf("hi , %s , how are you?",ch);
system("pause");
return 0;
}
于是小弟在输入字串时输入: qwertyuiopasdfg
结果萤幕居然全部显示,
不过我不是宣告10个空间给程式吗? 可是我看书里面介绍,
书里面也只是说明字串的使用方式,并没有说明超过会怎么样?
我的直觉想法,如果超过,应该只会显示9个字符吧。
于是我跑去其他书局看其他C语言的书,发现并没有针对这样的问题做解析,
因此想请问各位高手,是否能解答小弟的疑惑,感谢。
作者: galaxy321 (小朱) 2014-04-24 22:36:00
你的\0被盖掉了
作者: yvb 2014-04-25 00:37:00
你宣告大小是一回事, 你并未告知 scanf() 读入 ch 的大小限制;比方使用 scanf("%9s", ch); /* (注意不是 "%10s") */
作者:
HuvoKu (HuvoKu.)
2014-04-25 11:27:00如果已经宣告大小了,那多于的字串是被储存在哪里??
就往后继续放,没人知道那里有什么以前我曾搞到连Turbo C++ 3.0的讯息和其他东东都跑出来
楼主: infinitim37 (世界‧由我定义) 2014-04-25 12:39:00
感谢各位大大的解释,我试试看 感谢果真可以,不过这样我又有疑问?输出已经是限定9个空格那我输入11各字符,照道理来说应该是第11个是 \0如果这样,\0会放在第10格吗?那其他字符呢?会怎么处理?
你租了10间房间但是住了16个人,如果那6间没人住就没差
作者: yvb 2014-04-28 13:12:00
楼楼上的意思是? 来 人不住房 ... ?