看板 C_and_CPP 關於我們 聯絡資訊
char str[10]=""; scanf("%s",str); 為什麼我輸入超過10個數字 printf("%s",str); 可以顯示超過十個數字? 但是如果輸入太多就不行(停止回應) sizeof(str);會是10 輸入超過10個字還是10 strlen(str);會是0 為什麼? 如果有預設值 那電腦會自動加'\0' 便會是對的 然後我在下面加for迴圈跑比如說16次因為我輸入16個字 也是照樣printf出16個字。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.169.173.72 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1416330264.A.A03.html ※ 編輯: anoymouse (118.169.173.72), 11/19/2014 01:07:16
PoorLoser: overflow 啊, 蓋掉某些東西還可以跑但會不正常 11/19 01:13
PoorLoser: sizeof 回傳陣列大小 strlen 從基底讀到第一個 \0 11/19 01:14
anoymouse: 我看網路上說 scanf輸入完會自動加'\0' 11/19 01:20
PoorLoser: 限制字數, 例如限制 5 byte 要用 %5s, 不然會繼續寫入 11/19 01:41
PoorLoser: 然後後面的程式碼就被覆蓋惹 QQ 11/19 01:41
anoymouse: 不管我輸入幾個字 strlen都還是0耶 除非事先宣告 11/19 02:00
dirkc: 可以把code貼上來,多半是使用的問題,strlen的實作很單純 11/19 09:55
jacky1989: 會自動容錯一點點,scanf會幫你加上\0 11/19 14:14
jacky1989: 不過還是計算好字串長度比較保險 11/19 14:14