c - 在没有字符串库函数或数组表示法的情况下在 C 中使用 concat

标签 c concatenation

我的任务是能够连接两个字符串并使用指针返回一个新字符串。它应该返回一个新字符串,但它当前返回一个空格。这是我的代码:

char* concat(char* first, char* second){
    int string1Len = strlen(first);
    int string2Len = strlen(second);
    int length = string1Len + string2Len;
    char* string = malloc(sizeof(char)*length);
    int i;
    while(i < string1Len){
        *(string + i) = *first;
        first+= 1;
        i+= 1;
    }
    while( i < length){
        *(string + i) = *second;
        second+= 1;
        i+= 1;
    }

    return string;
}

最佳答案

除了单元化的 int i = 0 之外,您的代码看起来还不错。这在我的机器上有效:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>

char* concat(char* first, char* second){
    int string1Len = strlen(first);
    int string2Len = strlen(second);
    int length = string1Len + string2Len;
    char* string = malloc(sizeof(char)*length + 1);
    assert(string);
    int i=0;
    while(i < string1Len){
        string[i] = *first;
        first+= 1;
        i+= 1;
    }
    while(i < length){
        string[i] = *second;
        second += 1;
        i += 1;
    }
    string[i] = '\0';
    return string;
}

int main(){
        char* x = "foo";
        char* y = "bar";
        printf("%s\n", concat(x, y));
        // prints 'foobar'
}

P.S. 使用 string[i] 而不是 *(string + i),它通常被认为更具可读性。

关于c - 在没有字符串库函数或数组表示法的情况下在 C 中使用 concat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50033111/

相关文章:

c++ - 轴对齐矩形测试中的点?

mysql - 使用可变数量的其他字段更新 mySQL 字段

javascript - 使用串联和传递的参数循环遍历数组

c - 在c中使用pocketsphinx

在没有 math.h 的情况下计算幂和底的结果

c - 快速提问 : how to say if i < the max ammount of numbers stored in an array?

c - "Print the string using twice the length as the width."是什么意思?

python - 如何使用 python 优雅地按节组合/连接文件?

带别名的 MySQL Concat(长度)

python - 使用 pandas 从两列获取值范围的优雅方法