问道一只仙元多少钱:指针迷惑:这两个函数的区别?

来源:百度文库 编辑:神马品牌网 时间:2024/04/29 06:21:24
trans()返回一个字符。
函数1:
void change (char *origin,char *target)
{
int i;
for (i=0;origin[i]!='\0';i++)
target[i]=trans(origin[i]);
target[i]='\0';
}

函数2(编译通过,疑似有错)
void change (char *origin,char *target)
{
while(*origin) *target++ = trans(*origin++);
*target='\0';
}
这是我在做某online judge系统上一道题时写的
我在自己机器上运行,两个函数都出正确结果
但是提交上去以后,系统说第二个函数溢出了(大概是这么个意思)

函数2,估计是别人的机子指针不允许指向内存未分配的地方,改一下循环,
void change (char *origin,char *target)
{
do
{*target++ = trans(*origin);
}while(*++origin);
*target='\0';
}

运行一下就可以了,我觉得没错,是一样的.

trans是什么函数啊