[问题] 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不过还是计算好字串长度比较保险

Links booklink

Contact Us: admin [ a t ] ucptt.com