char str[10]="";
scanf("%s",str); 為什麼我輸入超過10個數字
printf("%s",str); 可以顯示超過十個數字? 但是如果輸入太多就不行(停止回應)
sizeof(str);會是10 輸入超過10個字還是10
strlen(str);會是0 為什麼? 如果有預設值 那電腦會自動加'\0' 便會是對的
然後我在下面加for迴圈跑比如說16次因為我輸入16個字
也是照樣printf出16個字。
overflow 啊, 蓋掉某些東西還可以跑但會不正常sizeof 回傳陣列大小 strlen 從基底讀到第一個 \0
限制字數, 例如限制 5 byte 要用 %5s, 不然會繼續寫入然後後面的程式碼就被覆蓋惹 QQ
不管我輸入幾個字 strlen都還是0耶 除非事先宣告
作者:
dirkc (3781615)
2014-11-19 09:55:00可以把code貼上來,多半是使用的問題,strlen的實作很單純
會自動容錯一點點,scanf會幫你加上\0不過還是計算好字串長度比較保險