请问下面的一段代码中,strcopy函数是怎么把s2拷贝给s1的阿?我怎么看不出来阿,还有那段while ((*s1++=*s2++)!='\0');是做什么用的阿?
-----------------------------------
#include <iostream>
#include <stdlib.h>
using namespace std;char strcopy(char *s1,const char *s2)
{
char *s=s1;
while ((*s1++=*s2++)!='\0');
return 0;
}
//////////////////////////////////////////////////////////
//main函数
//////////////////////////////////////////////////////////
int main()
{
const char ver[]="Version 5.01";
char cver[25];
strcopy(cver,ver);
cout << cver << endl; system("PAUSE");
return 0;
-----------------------------------
#include <iostream>
#include <stdlib.h>
using namespace std;char strcopy(char *s1,const char *s2)
{
char *s=s1;
while ((*s1++=*s2++)!='\0');
return 0;
}
//////////////////////////////////////////////////////////
//main函数
//////////////////////////////////////////////////////////
int main()
{
const char ver[]="Version 5.01";
char cver[25];
strcopy(cver,ver);
cout << cver << endl; system("PAUSE");
return 0;
while xun huan ((*s1++=*s2++)shi xian fu zhi
把s2当前所指的字符赋值给s1当前的地址,同时返回s2所指的字符,如果为\0,那就是s2结束了
do
{
*s1 = *s2;
s1++;
s2++;
}while(*s1 != '\0') //当没有到字符串的结尾时 你的char strcopy(char *s1,const char *s2)函数有错误
应该是char* strcopy(char *s1,const char *s2)
并且返回值应该改为
return s;
为什么要用char* strcopy(char *s1,const char *s2)
而不用char strcopy(char *s1,const char *s2)呢?可以告诉我吗?
故(*s1++=*s2++)中先是s2中的值赋值给vs1,再指针后移一位,都指向下一个字符,
而赋值式的 值就是等号左边或友边的 值,故(*s1++=*s2++)的 值就是
*vs1或*vs2,
当这两个值都不为‘\0'(表示字符串结束标记)时,while一直执行下去
他的等价代码正如 runall(龙行天下) 所说
楼主的程序会直接把字符串 s1 的 32 位指针指向字符串 s2 的