都是申請空間後不賦初值惹的禍

2022-07-14 12:30:28 字數 641 閱讀 5385

if(csztime !=null)

m_szscantime = new

char[strlen(csztime)+1];//

這裡是悲劇發生時空點

strncpy(m_szscantime, csztime, strlen(csztime));

}

假設csztime="";(注意這時csztime!=null) strlen(csztime)為0, 按照原本的意願只給m_szscantime申請了乙個char的空間,但是由於你沒有初始化值--尤其沒有最後的\0,導致機器認為後面只要沒遇到\0都是m_szscantime的value。

解決方法:

..

m_szscantime = new

char[strlen(csztime)+1

];memset(m_szscantime,

0, strlen(csztime)+1);//

要是使用strlen(m_szscantime) 那就是白費力了

strncpy(m_szscantime, csztime, strlen(csztime));

m_szscantime[strlen(m_szscantime)] = '\0'

;..

不申請新的空間,字串反轉

申請了 乙個變數儲存串的長度 一般面試這個程式就可以了,能寫出這個其實已經很牛 b 了,整上面那個,估計別人開始懷疑是以前做過這個題目了,呵呵,還得裝傻點 圖示過程 字串 abcdef s 1 str abcdef 0 abcdef 0 fbcdea 0 fbcde 0 a s 1 str bcde...

演算法題 字元移位,不申請空間的交換

題目 小q最近遇到了乙個難題 把乙個字串的大寫字母放到字串的後面,各個字元的相對位置不變,且不能申請額外的空間。你能幫幫小q嗎 參考 採用異或交換,氣泡排序把小寫冒到前面,大寫冒到後面。1.使用異或運算 int a 2,b 4 此時a的二進位制為 010 b的二進位制為 100 1 下面使用程式語言...

不申請變數和空間反轉字串

要求 不申請變數和空間 反轉字串 用乙個函式實現。異或 交換或者加減交換的典型應用!via 筆試題 基本思路 從 兩頭往中間做字元交換 字串最後乙個字元是 0 表示結束,沒有實際意義,可以將它 當作中間變數 等處理完成後,再將最後乙個字元置 0 即可 void reverse char s if s...