看板 C_and_CPP 關於我們 聯絡資訊
( *[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