作者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
1F:推 VictorTom:请您把六诫和james732大的回文再仔细的看过一遍:) 07/24 18:54
2F:→ james732:want = temp; 这行有问题 07/24 19:37
3F:→ grayyoung:欧欧 我把那边改成 07/24 23:06
4F:→ grayyoung:sprintf(want,"%s_%s%s",start,set,end); 07/24 23:06
5F:→ grayyoung:以後就可以了 07/24 23:06
6F:→ grayyoung:可是我还是想问一下 假如想把temp给want怎麽办 07/24 23:06
7F:→ grayyoung:因为那边我试过 want=temp want=&temp want=&temp[0] 07/24 23:07
8F:→ grayyoung:可是都不行 ~"~ 07/24 23:07
9F:推 VictorTom:要copy整个array要用memcpy或者这个char的case可以用 07/24 23:22
10F:→ VictorTom:strcpy; 问题在於, want是一个传入的址标, temp是一个 07/24 23:22
11F:→ VictorTom:区域阵列, 你试的那些东西全部违反六诫所说的东西.... 07/24 23:23
12F:→ VictorTom:建议您再多看看指标/阵列/函数参数传递相关的部份:) 07/24 23:24
13F:→ grayyoung:好好 我会再去翻翻书 07/25 00:45
14F:→ grayyoung:C++这种东西真是一下不碰整个就烂掉了...Orz|||| 07/25 00:45
15F:→ grayyoung:谢谢J大还有V大 以及其他帮我解答的人了!!!! 07/25 00:46