2013年5月7日 星期二

VC++ memcpy 移動問題


char szTemp[32];
strcpy(szTemp, "原字串");
memcpy(szTemp+1, szTemp, 32);
szTemp[0]= 0x20;


以上程式主要是把字串存在陣列的位置,往後移動一個Byte,
"原字串"是我假設的,出問題的似乎都是外造字。

VC++6.0這樣使用於Debug中沒問題,
但程式正式使用時,會有BUG出現,
會輸出:
"原字串" -> " 原字串@"
使用一個buf來處理,就沒問題。
不明白原因,有請路過的高手請解惑,
總之使用以下code解決。
     char szFinal[32], szTemp[32];
     memset(szTemp, 0x20, 32);
     memset(szFinal, 0x20, 32);
     strcpy(szTemp, "原字串");

     memcpy(szFinal+1, szTemp, 32);
     szFinal[0]= 0x20;
輸出:
"原字串" -> " 原字串"

沒有留言:

張貼留言