作者a1e (我上了賊船了囧)
看板C_and_CPP
標題[問題] 字串copy後尾末出現亂碼
時間Wed Aug 18 10:50:46 2010
( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
( 未必需要依照此格式,文章條理清楚即可 )
遇到的問題: (題意請描述清楚)
剛練習寫一個字串複製的程式,但印出的字串尾端出現亂碼
看結果是第一次字串複製就出問題,但看不太出來是那裡出了錯
希望得到的正確結果:
point char
point char
point char
程式跑出來的錯誤結果:
point char
point char= (不一定是=,有時是跑出Y或其他符號)
point char=
開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux)
Dev-c++
有問題的code: (請善用置底文標色功能)
#include <stdio.h>
void strc(char *,char *);
int main(){
char des[10];
char des2[10];
char *ptr="point char";
strc(des,ptr);
strc(des2,des);
puts(des2);
system("pause");
return 0;
}
void strc(char *des,char *sour){
int i=0;
while( *(sour+i)!='\0'){
*(des+i)=*(sour+i);
i++;
}
puts(des);
printf("\n");
}
補充說明:
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.69.178.34
→ akasan:你給的空間不夠 08/18 10:51
有想過是這個問題,但兩個字元陣列加大也是有同樣的問題
※ 編輯: a1e 來自: 210.69.178.34 (08/18 10:53)
→ akasan:還有字串要結束字元 08/18 10:52
→ hilorrk:array長度不夠長 function也沒copy到'\0' 08/18 10:53
抓到問題了Orz,結果是我耍笨,原本有在跳出迴圈後
用*(des+i+1)='\0';來加'\0',第一次跑發現有問題,想說是不是'\0'在作怪
把他拿掉後還是有問題
剛剛想起來,我迴圈就跑到字串尾了再+1當然會出問題Orz
※ 編輯: a1e 來自: 210.69.178.34 (08/18 10:58)
→ ericinttu:換行符號 (line feed, carrige return), 看看存的時候 08/18 12:24
→ ericinttu:是用什麼字元存的, 在讀取時,又是讀出什麼. 08/18 12:25