猿问

MyStrcpy函数?

我写了一个MyStrcpy函数,具体如下:
#include <iostream> 
using namespace std;

void MyStrcpy(char *s2, char *s1)
{
while(*s1)
{
*s2 = *s1;
s2++;
s1++;
}
*s2 = '\0';
}

int main() 

char s1[] = "12345678";
char s2[8] ={0};
MyStrcpy(s2, s1);

cout << s2 << endl;
return 0;
}
但是如果改成
#include <iostream> 
using namespace std;
int main() 

char s1[] = "12345678";
char s2[8] ={0};
while(*s1)
{
*s2 = *s1;
s2++;
s1++;
}
*s2 = '\0';
cout << s2 << endl;
return 0;
}
会报错:错误为error C2105: '++' needs l-value
当然s2输出也不对,求教原因.

达令说
浏览 708回答 1
1回答

临摹微笑

char s1[] = "12345678";说明 s1是数组名, 数组名是常量, 不能够进行后面的s1++这种自增操作的, 如果想的话, 可以char* temp = s1;然后while(*temp){*s2 = *temp;s2++;temp++;}
随时随地看视频慕课网APP
我要回答