首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >国产级联功能

国产级联功能
EN

Stack Overflow用户
提问于 2018-06-17 13:32:52
回答 2查看 73关注 0票数 1

我试图用C语言创建一个级联函数,我是初学者.

但是我有一个问题,我的函数只连接第二个字符串的第一个字符,但是对all字符串不起作用。

例子:

String1 = "ABCD“和String2 = "EFGH”--结果是: String1 = "ABCDE“

这里我的代码:

代码语言:javascript
复制
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++;
    }
}

有人知道问题在哪里吗?

EN

回答 2

Stack Overflow用户

发布于 2018-06-17 13:56:24

不确定答案是什么,但您的复制或连接例程似乎都没有在输出字符串的末尾写‘\0’。您可以在长度检查中使用<=来纠正这一点,或者可以循环直到得到0字符,然后在循环后添加它。

票数 1
EN

Stack Overflow用户

发布于 2018-06-17 14:02:20

正如@风向标建议的那样,我改变了我的功能如下:

代码语言:javascript
复制
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迭代中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50897158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档