这是代码。它必须包含 void main() 之前的部分,因为这是我被告知的代码要求。void strcopy 之后的内容需要保留到 void main() 为止。
#include <stdio.h>
void strcopy(char * string1, char * string2)
{
int i = 0;
while (string1[i] != '\0') {
string2[i] = string1[i];
i++;
}
return;
/* copies string1 to string 2 */
}
void main()
{
char string1[1000], string2[1000];
int i;
printf("Enter the string: \n");
scanf("%[^\n]s", string1);
printf(" %s ", string2);
return;
}
这就是正在打印的内容,我被难住了。有人可以帮我吗?
Enter the string:
hello
t��\�
谢谢
最佳答案
首先,您没有调用strcopy
,因此您只打印string2
的未初始化内容。其次,在 strcopy
中,您忘记终止目标字符串(请注意,循环在写入“\0”之前终止)。写:
void strcopy(char * string1, char * string2)
{
int i = 0;
while (string1[i] != '\0') {
string2[i] = string1[i];
i++;
}
string2[i]='\0';
return;
/* copies string1 to string 2 */
}
如果不终止字符串,则目标内存中的任何字节都将被视为“属于该字符串”,直到达到 0x0 字节为止。这些字节可能会产生如此奇怪的输出。
关于c - 将一个字符串复制到另一个字符串的程序(包含该函数)正在打印奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42041863/