PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] scanf()问题
楼主:
anoymouse
(没有暱称)
2014-11-19 01:04:21
char str[10]="";
scanf("%s",str); 为什么我输入超过10个数字
printf("%s",str); 可以显示超过十个数字? 但是如果输入太多就不行(停止回应)
sizeof(str);会是10 输入超过10个字还是10
strlen(str);会是0 为什么? 如果有默认值 那电脑会自动加'\0' 便会是对的
然后我在下面加for循环跑比如说16次因为我输入16个字
也是照样printf出16个字。
作者:
PoorLoser
(废文制造机)
2014-11-19 01:13:00
overflow 啊, 盖掉某些东西还可以跑但会不正常sizeof 回传阵列大小 strlen 从基底读到第一个 \0
楼主:
anoymouse
(没有暱称)
2014-11-19 01:20:00
我看网络上说 scanf输入完会自动加'\0'
作者:
PoorLoser
(废文制造机)
2014-11-19 01:41:00
限制字数, 例如限制 5 byte 要用 %5s, 不然会继续写入然后后面的程式码就被覆蓋惹 QQ
楼主:
anoymouse
(没有暱称)
2014-11-19 02:00:00
不管我输入几个字 strlen都还是0耶 除非事先宣告
作者:
dirkc
(3781615)
2014-11-19 09:55:00
可以把code贴上来,多半是使用的问题,strlen的实作很单纯
作者:
jacky1989
2014-11-19 14:14:00
会自动容错一点点,scanf会帮你加上\0不过还是计算好字串长度比较保险
继续阅读
[问题] opencv遗失CVHARRTRAINING.DLL
jkowaur
[问题] 组合语言请求解释
adam77x
Re: [理工] 程式语言观念
littleshan
Re: [理工] 程式语言观念
ando5566
Re: [理工] 程式语言观念
bachelorwhc
Fw: [理工] 程式语言观念
gauss760220
[问题] THX
laputaca
[问题] 如何让程式持续等待指令内容
love606009
[问题] WIN7&WIN8PATH的默认值
lunashining
[问题] for循环{ }的影响
davis20204
Links
booklink
Contact Us: admin [ a t ] ucptt.com