最近做個vc++程式,要將乙個char陣列的從第n位開始取到n+m位,然後賦給乙個char陣列,但是最後總是有亂碼,經過查閱資料,是因為沒有結尾的'\0'
字串後面的部分記憶體內容存放的**恰好是中文字元 所以就顯示中文了。例如陣列從第2位取到倒數第2位
code
1char
*pbuf
=new
char
[len_r-4
];2*(pbuf
+len_r-4
)='\0';3
utility::chararraytochararray(buf,pbuf,len_r);
//將buf(0132323104)資料部分取出賦給pbuf(323231)45
intiend
=(len_r-4
)/2+1;6
byte
*dbuf
=new
byte
[iend];
7*(dbuf
+iend-1
)=0;
8utility::chararraytobytearray(pbuf,dbuf,len_r-4
); //
將pbuf(323230)轉化為dbuf(220)
9bool
utility::chararraytochararray(
char
*charr,
char
*btarr,
intcharrlen)
1018
return
true;19
}2021
bool
utility::chararraytobytearray(
char
*charr,
byte
*btarr,
intcharrlen)
2237
return
true;38
}其中buf為要轉化的陣列,len_r為其長度。
Char陣列的賦值
1 定義的時候直接用字串賦值 char a 10 hello sizeof a 為10 或char a hello sizeof a 為6 注意 不能先定義再給它賦值,如char a 10 a 10 hello 這樣是錯誤的!2 對陣列中字元逐個賦值 char a 10 sizeof a 為10 或...
char 的賦值問題
在實際程式設計過程中常會用到char 型別來表達字串,而此時如果使用動態分配的方式並且在賦值時沒有使用strcpy函式而是直接使用 則在釋放該指標空間時會產生堆溢位錯誤,造成該問題產生的原因大家都明白只是沒注意。所以在此時char 賦值建議使用拷貝函式來處理,例項 char mtype 0 mtyp...
用Qstring給char 陣列賦值
tree data.desc desc是char 80 型別的資料 qstring newdescstr strcpy tree data.desc newdescstr.tolocal8bit data 注意 tolocal8bit 為了讓qstring變成qbytearray,也為了漢字本地化處...