對於這個程序,我收到了一些奇怪的輸出?關於c中的memset()函數?
char str[]= "almost every programmer should know memset!";
memset(str,'*',5);
puts(str);
所需的輸出: *****幾乎每個程序員都應該知道memset的! 我觀察到: ***** t alomost每個程序員都應該知道memset!
對於6的倍數,只顯示正確的輸出。
對於這個程序,我收到了一些奇怪的輸出?關於c中的memset()函數?
char str[]= "almost every programmer should know memset!";
memset(str,'*',5);
puts(str);
所需的輸出: *****幾乎每個程序員都應該知道memset的! 我觀察到: ***** t alomost每個程序員都應該知道memset!
對於6的倍數,只顯示正確的輸出。
在大多數情況下,數組名稱衰變成一個指針的第一個元素,這意味着您memset()
調用設置5個字節到'*'
,從str
第一個元素開始。換句話說,它會覆蓋前5個字母與'*'
,輸出將是:
*****t every programmer should know memset!
您所看到的輸出是正確的:
memset()
將設置'*'
的前5個字節的數組str
。其餘的字符串保持原樣。
您觀察到的輸出是否準確? – zubergu 2014-11-03 10:35:00
你絕對沒有注意到輸出是每個程序員都應該知道memset!*你可能有* * * * * * * * * * *每個程序員都應該知道memset的!* – 2014-11-03 10:35:38