#include "stdafx.h"
#include <iostream.h>
void main( int argc, char **argv )
{
void strcopy(char *,char*);
char a[]="hello,world!";
char b[20];
strcopy(b,a);
cout<<"b is:"<<b<<endl;
}
void strcopy(char *des,char *src)
{
while(*des++=*src++);
// cout<<"dest is:"<<des<<endl; //注释这条语句,程序正常实现,不注出现乱码!
}
或者这个版本;
void strcopy(char *des,char *src)
{
des=src;
cout<<"dest is:"<<des<<endl;
}
总之这个函数和主函数中的COUT内容不能够都正常显示,大家运行一下吧,我用的VC6
运行while(*des++=*src++);后,由于des++,des指向字符串的末尾了,再显示出来当然出现乱码啦,改成这样:
void strcopy(char *des,char *src)
{
char *Temp = des;
while(*Temp++=*src++);
cout<<"dest is:"<<des<<endl;
}
void strcopy(char *,char*);
这个调用是什么意思?
是啊~
由于你使用while语句时候, des已经最终到达结尾~~~
输出就会有乱码出现~~~
解决的办法是
设置一个变量,来将des位置首先保存下来~~~
然后输出它就可以解决了~~~
char *strcopy(char *des,const char *src)
{
char *temp=des;
assert(des!=NULL && src!=NULL);
while(*des=*src)
{
++des;
++src;
}
return temp;
}