vc 下char陣列賦值亂碼問題

2022-02-25 19:45:14 字數 1002 閱讀 3368

最近做個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,也為了漢字本地化處...