[問題] 字串copy後尾末出現亂碼

看板C_and_CPP (C/C++)作者 (我上了賊船了囧)時間15年前 (2010/08/18 10:50), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/1
( *[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

08/18 10:51, , 1F
你給的空間不夠
08/18 10:51, 1F
有想過是這個問題,但兩個字元陣列加大也是有同樣的問題 ※ 編輯: a1e 來自: 210.69.178.34 (08/18 10:53)

08/18 10:52, , 2F
還有字串要結束字元
08/18 10:52, 2F

08/18 10:53, , 3F
array長度不夠長 function也沒copy到'\0'
08/18 10:53, 3F
抓到問題了Orz,結果是我耍笨,原本有在跳出迴圈後 用*(des+i+1)='\0';來加'\0',第一次跑發現有問題,想說是不是'\0'在作怪 把他拿掉後還是有問題 剛剛想起來,我迴圈就跑到字串尾了再+1當然會出問題Orz ※ 編輯: a1e 來自: 210.69.178.34 (08/18 10:58)

08/18 12:24, , 4F
換行符號 (line feed, carrige return), 看看存的時候
08/18 12:24, 4F

08/18 12:25, , 5F
是用什麼字元存的, 在讀取時,又是讀出什麼.
08/18 12:25, 5F
文章代碼(AID): #1CQqg8gK (C_and_CPP)
文章代碼(AID): #1CQqg8gK (C_and_CPP)