看板 C_and_CPP 關於我們 聯絡資訊
謝謝版大的回覆 之前看完第六誡以後 我就有先用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
VictorTom:請您把六誡和james732大的回文再仔細的看過一遍:) 07/24 18:54
james732:want = temp; 這行有問題 07/24 19:37
grayyoung:歐歐 我把那邊改成 07/24 23:06
grayyoung:sprintf(want,"%s_%s%s",start,set,end); 07/24 23:06
grayyoung:以後就可以了 07/24 23:06
grayyoung:可是我還是想問一下 假如想把temp給want怎麼辦 07/24 23:06
grayyoung:因為那邊我試過 want=temp want=&temp want=&temp[0] 07/24 23:07
grayyoung:可是都不行 ~"~ 07/24 23:07
VictorTom:要copy整個array要用memcpy或者這個char的case可以用 07/24 23:22
VictorTom:strcpy; 問題在於, want是一個傳入的址標, temp是一個 07/24 23:22
VictorTom:區域陣列, 你試的那些東西全部違反六誡所說的東西.... 07/24 23:23
VictorTom:建議您再多看看指標/陣列/函數參數傳遞相關的部份:) 07/24 23:24
grayyoung:好好 我會再去翻翻書 07/25 00:45
grayyoung:C++這種東西真是一下不碰整個就爛掉了...Orz|||| 07/25 00:45
grayyoung:謝謝J大還有V大 以及其他幫我解答的人了!!!! 07/25 00:46