燙燙燙燙燙字

一、在編程寫網絡作業時出現了一個問題,我的思路是客戶端的一個字符串傳到服務器端被接收之後存放於一個數組中,結果字符數組中除了拿到了客戶端的字符串之後,還有一堆的燙字。。。。

燙字的出現是由於未初始化變量造成的,也就是說對於服務器端的字符數組需要我們對其進行初始化一下。

二、解決辦法:加上這一句話memset(recvBuf,'\0',sizeof(recvBuf));也就是要對數組進行初始化賦一下值。

三、

四、總結一下memset函數:需要的頭文件:<memory.h> or <string.h>  <cstring>

void *memset(void *s, int c, size_t n);

將s所指向的某一塊內存中的每個字節的內容全部設置爲ch指定的ASCII值, 塊的大小由第三個參數指定,這個函數通常爲新申請的內存做初始化工作, 其返回值爲指向S的指針。

函數作用:在一段內存中填充某個給定的值,它是對較大的結構體或數組進行清零操作的一種最快方法。

PS:特別是對於字符指針類型的,沒有被賦值的剩餘的部分通常是不會爲0的,不妨作一個試驗,定義一個字符數組,並輸入一串字符,如果不用memset實現清零,使用MessageBox顯示出來就會有亂碼(0表示NULL,如果有,就默認字符結束,不會輸出後面的亂碼) ,上面的例子出現燙字就是因爲字符數組剩餘部分沒有被賦值。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章