#include <stdio.h> #include <string.h> char* str_cat(char *a, char *b); const int N = 82; int main() { char s1[N*3], s2[N], s3[N*4]; fgets(s1, N, stdin); //最多接收N-1个字符,包括回车 s1[strlen(s1) - 1] = 0; //接收一行字符并去掉末尾回车符 fgets(s2, N, stdin); s2[strlen(s2) - 1] = 0; printf("%s\n", s1); //输出s1 printf("%s\n", s2); //输出s2 printf("%s\n", str_cat(s1, s2)); //将s2连接到s1末尾后输出s1 strcpy(s3,"hh!"); str_cat(s3, str_cat(s1, s2)); //将s2连接到新的s1末尾后,将s1连接到s3 printf("%s", s3); //输出s3 return 0; } /* 请在这里填写答案 */
时间: 2024-02-14 10:17:41 浏览: 65
好的,根据您提供的代码,我为您编写完整的程序如下:
```c
#include <stdio.h>
#include <string.h>
char* str_cat(char *a, char *b);
const int N = 82;
int main() {
char s1[N*3], s2[N], s3[N*4];
fgets(s1, N, stdin); //最多接收N-1个字符,包括回车
s1[strlen(s1) - 1] = 0; //接收一行字符并去掉末尾回车符
fgets(s2, N, stdin);
s2[strlen(s2) - 1] = 0;
printf("%s\n", s1); //输出s1
printf("%s\n", s2); //输出s2
printf("%s\n", str_cat(s1, s2)); //将s2连接到s1末尾后输出s1
strcpy(s3, "hh!");
str_cat(s3, str_cat(s1, s2)); //将s2连接到新的s1末尾后,将s1连接到s3
printf("%s", s3); //输出s3
return 0;
}
char* str_cat(char *a, char *b) {
int len_a = strlen(a);
int len_b = strlen(b);
char *c = (char*)malloc((len_a + len_b + 1) * sizeof(char));
int i, j;
for (i = 0; i < len_a; i++) {
c[i] = a[i];
}
for (j = 0; j < len_b; j++) {
c[i+j] = b[j];
}
c[i+j] = '\0';
strcat(a, b);
return a;
}
```
在该程序中,我们首先定义了一个 `str_cat()` 函数,用于实现字符串的连接,并返回连接后的字符串。然后我们在 `main()` 函数中从标准输入中读取两个字符串 `s1` 和 `s2`,并输出它们的值。接着,我们调用 `str_cat()` 函数将 `s2` 连接到 `s1` 的末尾,并输出连接后的 `s1`。然后,我们将 `s2` 连接到 `s1` 的末尾,并再次将连接后的 `s1` 连接到字符串 `s3` 的末尾。最后,我们输出字符串 `s3`。
需要注意的是,在 `str_cat()` 函数中,我们使用了 `strcat()` 函数将 `b` 中的字符连接到 `a` 的末尾,以达到将 `s1` 和 `s2` 连接起来的目的。同时,我们也将 `a` 作为返回值,以便在连接多个字符串时可以使用前一个连接的结果再次调用该函数。
阅读全文