Re: [問題] 回傳字串陣列

看板C_and_CPP (C/C++)作者 (灰狼)時間16年前 (2009/07/24 18:47), 編輯推噓2(2013)
留言15則, 3人參與, 最新討論串3/3 (看更多)
謝謝版大的回覆 之前看完第六誡以後 我就有先用point的方式傳過 可是還是不行 所以才又發問 想請問以下 --------------------------------------------- void setname(char *want,char name[20],char set[20]){ char temp[20],start[50],end[20]; cout << want << endl << name << endl << set << endl ; int g=0; for(int i=0;i<20;i++,g++){ if(name[i]=='.') break; start[i]=name[i]; } start[g] = '\0' ; for(int i=0;i<20;i++,g++){ end[i]=name[g]; } sprintf(temp,"%s_%s%s",start,set,end); want = temp; cout << want << endl << name << endl << set << endl ; } 在main裡面 我用 setname(temp,name,"hello"); cout << temp << endl; 可是結果會出現(我有標輸出的地方) (假設我name裡面原本是noise.bmp) ---------- 亂碼 moise.bmp hello noise_hello.bmp noise.bmp hello 亂碼 ---------- 簡單來說 就是我char陣列處理已經OK 可是傳不回去... = = 想請問一下還有哪裡不對...Orz||||||| -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.139.4

07/24 18:54, , 1F
請您把六誡和james732大的回文再仔細的看過一遍:)
07/24 18:54, 1F

07/24 19:37, , 2F
want = temp; 這行有問題
07/24 19:37, 2F

07/24 23:06, , 3F
歐歐 我把那邊改成
07/24 23:06, 3F

07/24 23:06, , 4F
sprintf(want,"%s_%s%s",start,set,end);
07/24 23:06, 4F

07/24 23:06, , 5F
以後就可以了
07/24 23:06, 5F

07/24 23:06, , 6F
可是我還是想問一下 假如想把temp給want怎麼辦
07/24 23:06, 6F

07/24 23:07, , 7F
因為那邊我試過 want=temp want=&temp want=&temp[0]
07/24 23:07, 7F

07/24 23:07, , 8F
可是都不行 ~"~
07/24 23:07, 8F

07/24 23:22, , 9F
要copy整個array要用memcpy或者這個char的case可以用
07/24 23:22, 9F

07/24 23:22, , 10F
strcpy; 問題在於, want是一個傳入的址標, temp是一個
07/24 23:22, 10F

07/24 23:23, , 11F
區域陣列, 你試的那些東西全部違反六誡所說的東西....
07/24 23:23, 11F

07/24 23:24, , 12F
建議您再多看看指標/陣列/函數參數傳遞相關的部份:)
07/24 23:24, 12F

07/25 00:45, , 13F
好好 我會再去翻翻書
07/25 00:45, 13F

07/25 00:45, , 14F
C++這種東西真是一下不碰整個就爛掉了...Orz||||
07/25 00:45, 14F

07/25 00:46, , 15F
謝謝J大還有V大 以及其他幫我解答的人了!!!!
07/25 00:46, 15F
文章代碼(AID): #1AQP4gJO (C_and_CPP)
文章代碼(AID): #1AQP4gJO (C_and_CPP)