作者grayyoung (灰狼)
看板C_and_CPP
標題Re: [問題] 回傳字串陣列
時間Fri Jul 24 18:47:05 2009
謝謝版大的回覆
之前看完第六誡以後 我就有先用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