用C语言编写一个类似库函数strcat()的函数,实现两个字符串的连接,并在main()函数中验证该自定义函数的功能。测试输入: abc def 预期输出: abcdef。在下列代码的前提下编写:#include <stdio.h> void main() { char str1[100]; char str2[100]; gets(str1); gets(str2); char * scat(char *s1,char *s2); printf("%s\n",scat(str1,str2)); } char * scat(char *s1,char *s2) //将s2字符串连接到s1串之后 { //********Begin************* //********End*************** }
时间: 2023-07-18 12:45:21 浏览: 152
好的,以下是实现该自定义函数的代码:
```c
#include <stdio.h>
#include <string.h>
char *scat(char *s1, char *s2);
int main() {
char str1[100];
char str2[100];
fgets(str1, 100, stdin);
fgets(str2, 100, stdin);
printf("%s\n", scat(str1, str2));
return 0;
}
char *scat(char *s1, char *s2) {
int len1 = strlen(s1);
int len2 = strlen(s2);
char *result = (char*)malloc((len1 + len2 + 1) * sizeof(char));
if (result == NULL) {
printf("Memory allocation failed!\n");
return NULL;
}
strcpy(result, s1);
strcat(result, s2);
return result;
}
```
该函数的实现思路是先计算出两个字符串的长度,然后申请一段新的内存空间,将两个字符串连接起来,并返回新的字符串。需要注意的是,为了让字符串末尾有一个空字符('\0'),新申请的内存空间的大小应该是两个字符串长度之和再加上1。
在主函数中,我们先使用fgets()函数从标准输入中读入两个字符串,然后调用自定义函数scat()进行字符串的连接,并将结果输出到标准输出中。
需要注意的是,在C99标准之后,main()函数的返回值应该是int类型,因此我们将void main()改为了int main()。此外,由于gets()函数存在缓冲区溢出的风险,因此建议使用更加安全的fgets()函数进行输入。
阅读全文