C strcpy复制字符串并添加另一个字符
我被指派用我的名字演示我自己制作的strcpy函数。我使用的是代码块,我遇到的问题是,对于我输入的一些字符的随机组合,它大部分时间都会复制和打印相同的字符。但是,例如,如果我输入我的姓名Mark,打印的语句将显示string1=Mark(我的输入),对于string2,它将打印utring2=MarkH▀。直到现在我才意识到它是在打印utring2而不是string2,所以现在我也在想这个问题C strcpy复制字符串并添加另一个字符,c,C,我被指派用我的名字演示我自己制作的strcpy函数。我使用的是代码块,我遇到的问题是,对于我输入的一些字符的随机组合,它大部分时间都会复制和打印相同的字符。但是,例如,如果我输入我的姓名Mark,打印的语句将显示string1=Mark(我的输入),对于string2,它将打印utring2=MarkH▀。直到现在我才意识到它是在打印utring2而不是string2,所以现在我也在想这个问题 #include <stdio.h> char* mystrcpy(char* s1, c
#include <stdio.h>
char* mystrcpy(char* s1, char* s2);
main()
{
char string1[100], string2[100]; //declaring two strings with buffer sizes of 100
gets(string1); //takes input from user for string1
mystrcpy(string2, string1); //calls string copy function
printf("string1 = ");
puts(string1); //prints string1
printf("string2 = ");
puts(string2); //prints new string2 which should be the same as string1
return 0; //ends main program
}
char* mystrcpy(char* s1, char* s2)
{
int i=0; //initializes element counter at 0 for first element
while(s2[i] != '\0') //loops until null is reached
{
s1[i] = s2[i]; //copies the i-th element of string1 to the corresponding element of string2
i++; //increments element counter
}
return s1;
}
您也需要复制0,在返回之前执行
s1[i]=0
还是去做
int i=0; //initializes element counter at 0 for first element
do
{
s1[i] = s2[i]; //copies the i-th element of string1 to the corresponding element of string2
i++; //increments element counter
} while(s2[i] != '\0') //loops until null is reached
return s1;
当测试
s2[i]!='\0'
失败您没有进入循环,这意味着您忽略字符串终止符'\0'
因此,您需要在循环后执行
s1[i]='\0'
,以确保字符串s1
的终止。然后您可以返回复制的字符串。啊,这个解释很清楚。我没意识到我也要复制它。第一次用字符串。非常感谢。
int i=0; //initializes element counter at 0 for first element
do
{
s1[i] = s2[i]; //copies the i-th element of string1 to the corresponding element of string2
i++; //increments element counter
} while(s2[i] != '\0') //loops until null is reached
return s1;