c语言编写函数void my_strcat(char str1[],char str2[]),实现字符串连接。
时间: 2024-01-14 21:01:53 浏览: 191
C语言中的函数void my_strcat(char str1[],char str2[])可以实现字符串连接。该函数的实现过程如下:
1. 首先判断输入的两个字符串是否为空,如果为空则直接返回。
2. 将指针str1指向字符串s1的末尾。
3. 将字符串s2中的字符逐个复制到字符串s1的末尾,直到字符串s2的末尾。
4. 在字符串s1的末尾添加'\0',表示字符串的结束。
下面是该函数的代码实现:
void my_strcat(char str1[], char str2[]) {
int i = 0, j = 0;
while (str1[i] != '\0') {
i++;
}
while (str2[j] != '\0') {
str1[i] = str2[j];
i++;
j++;
}
str1[i] = '\0';
}
使用该函数可以将两个字符串连接起来,例如:
char str1[100] = "hello";
char str2[100] = "world";
my_strcat(str1, str2);
printf("%s", str1); //输出"helloworld"
相关问题
用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)
好的,以下是实现该自定义函数的代码:
```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;
}
```
该函数的实现思路和前面的代码一样,但是需要注意的是,在函数定义和函数声明中,参数应该是char*类型而不是char类型。在函数体中,我们先计算出两个字符串的长度,然后申请一段新的内存空间,将两个字符串连接起来,并返回新的字符串。需要注意的是,为了让字符串末尾有一个空字符('\0'),新申请的内存空间的大小应该是两个字符串长度之和再加上1。
在主函数中,我们先使用fgets()函数从标准输入中读入两个字符串,然后调用自定义函数scat()进行字符串的连接,并将结果输出到标准输出中。
同样需要注意的是,在C99标准之后,main()函数的返回值应该是int类型,因此我们将void main()改为了int main()。此外,由于gets()函数存在缓冲区溢出的风险,因此建议使用更加安全的fgets()函数进行输入。
C语言编写一个类似于strcat()的字符串连接函数,并在主函数中调用
好的,下面是一个类似于`strcat()`的字符串连接函数的C语言代码:
```c
#include <stdio.h>
#include <string.h>
void mystrcat(char *s1, const char *s2) {
while (*s1) {
s1++;
}
while (*s2) {
*s1++ = *s2++;
}
*s1 = '\0';
}
int main() {
char str1[20] = "Hello, ";
const char *str2 = "world!";
mystrcat(str1, str2);
printf("%s\n", str1);
return 0;
}
```
这个函数的功能与`strcat()`类似,都是将两个字符串连接起来,但是它是自己实现的,不使用库函数。它的参数是一个指向目标字符串的指针`s1`和一个指向源字符串的指针`s2`,它会将`s2`中的字符逐个复制到`s1`的末尾,直到遇到`\0`为止。注意,`s1`必须有足够的空间来容纳`s2`,否则会导致缓冲区溢出。在上面的示例中,我们先声明了一个长度为20的字符数组`str1`,然后将它初始化为`"Hello, "`,再定义一个指向`"world!"`的常量字符串`str2`,最后调用`mystrcat()`函数将两个字符串连接起来,输出结果为`"Hello, world!"`。
阅读全文