【发布时间】:2020-04-13 07:13:54
【问题描述】:
运动:
编写一个函数,在作为参数给出的 CH2 字符串的末尾添加一个 CH1 字符串后返回一个 CH 字符串。
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
char *ajout(char ch1[], char ch2[]);
int main() {
char ch1[] = "hello";
char ch2[] = "ooo";
char *ch = ajout(ch1, ch2);
printf("%s",ch);
return 0;
}
char *ajout(char ch1[], char ch2[]) {
char *ch;
int nb = 0;
for (int i = 0; ch1[i] != '\0'; i++) {
ch[i] = ch1[i];
nb++;
}
int i = 0;
for (i; ch2[i] != '\0'; i++) {
ch[nb] = ch2[i];
nb++;
}
return ch;
}
程序执行后的预期结果:helloooo
【问题讨论】:
-
char *ch;没有分配内存(在函数ajout中)。试试ch = malloc(1 + strlen(ch1) + strlen(ch2));你应该在连接的字符串中添加一个 nul 终止符。 -
尝试 malloc 并阅读有关缓冲区溢出的信息
-
这能回答你的问题吗? How do I concatenate two strings in C?
-
谢谢@weathervane,这就是我所做的:` int c = malloc(1 + strlen(ch1) + strlen(ch2));字符 ch[c]; *ch=ajout(ch1,ch2);` 但还是不行,我的代码有什么问题?
-
发布问题中的任何更新(完整实施),以便我们对其进行修改。