【发布时间】:2022-07-13 16:14:27
【问题描述】:
我尝试创建自己的mystrcpy() 函数,它采用与标准函数相同的参数。它没有响应。数组不会被复制。
size_t Mystrlen(const char* s)
{
int i = 0;
while (s[i] != '\0')
{
i++;
}
return i;
}
char* Mystrcpy(char* s1, const char* s2)
{
for (int i = 0; i < Mystrlen(s2); i++)
s1[i] = s2[i];
return s1;
}
int main()
{
char s1[50];
char s2[50];
cout << "enter the value of second string\n";
cin >> s2;
Mystrcpy(s1, s2);
}
【问题讨论】:
-
我们需要查看一个名为
Mystrlen的函数来讨论或调试这段代码的作用。代码应该是minimal reproducible example。 -
给您带来的不便,我深表歉意。我已经添加了功能。
-
现在,定义“不工作”您在发布的代码中调用此函数,但对结果
s1执行 nothing -
“数组没有被复制” 我向你保证,在这里显示的代码中,数组确实被复制了。最多但不包括空终止符。您的问题中添加了一个链接,其中显示了复制的字符。
-
Mystrcpy不需要调用Mystrlen。只需复制字符,直到您击中 nul 终止符。并且不要忘记复制终结者!执行此操作的典型黑客头代码是while (*s1++ = *s2++) ;。如果这对您没有意义,请不要担心。