我想编写一个在C中进行字符串连接的函数。同时,我想使用指针来实现这一点。我在这里写了这段代码:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
char* concat(char* a, char* b) { //функция конкатенации
char* c = (char*) malloc(sizeof(char)*(strlen(a)+strlen(b)+1)); //выделение памяти для новой строки
for (int i = 0; i < strlen(a); i++){ //задать первым символам результатирующей строки символы первой строки
c[i] = a[i];
}
for (int i = strlen(a); i < strlen(a)+strlen(b); i++){//задать следующим символам результатирующей строки символы второй строки
c[i] = b[i];
}
c[strlen(a)+strlen(b)] = '\0'; //добавить нулевой символ
return c;
}
int main(){ //проверка
char* a = concat("Hello, ", "world!");
for (int i = 0; i < strlen(a); i++){ //распечатка
printf("%c", a[i]);
}
free(a); //освобождение памяти
return 0;
}
但不幸的是,它并没有按照应有的方式工作。它输出:
Hello, Hello,
如何使其不重复第一行,而是粘合两个不同的行?
