我试图用C语言创建一个级联函数,我是初学者.
但是我有一个问题,我的函数只连接第二个字符串的第一个字符,但是对all字符串不起作用。
例子:
String1 = "ABCD“和String2 = "EFGH”--结果是: String1 = "ABCDE“
这里我的代码:
int main(int argc, char *argv[])
{
char *myChaine1 = (char*)malloc(100);
char *myChaine2 = (char*)malloc(100);
myStrCpy("ABCD", myChaine1);
myStrCpy("EFGH", myChaine2);
myStrCat(myChaine1, myChaine2);
printf("%s", myChaine1);
free(myChaine1);
free(myChaine2);
return 0;
}
// Home made string length function
int myStrLen(const char* word)
{
int length = 0;
while (word[length] != '\0')
{
length++;
}
return length;
}
// Home made Copy string function
char* myStrCpy(const char* word, char* copy)
{
int i = 0;
while (i < myStrLen(word))
{
copy[i] = word[i];
i++;
}
}
// Home made concatenate function
char* myStrCat(char* chaine1, const char* chaine2)
{
int i = 0;
while (i < myStrLen(chaine2))
{
chaine1[i + myStrLen(chaine1)] = chaine2[i];
i++;
}
}有人知道问题在哪里吗?
发布于 2018-06-17 13:56:24
不确定答案是什么,但您的复制或连接例程似乎都没有在输出字符串的末尾写‘\0’。您可以在长度检查中使用<=来纠正这一点,或者可以循环直到得到0字符,然后在循环后添加它。
发布于 2018-06-17 14:02:20
正如@风向标建议的那样,我改变了我的功能如下:
char* myStrCat(char* chaine1, const char* chaine2)
{
int i = 0;
int lastValue = myStrLen(chaine1);
while (i < myStrLen(chaine2))
{
chaine1[i + lastValue] = chaine2[i];
i++;
}
chaine1[myStrLen(chaine1)] = '\0';
}问题在循环中的myStrLen迭代中。
https://stackoverflow.com/questions/50897158
复制相似问题