不使用string.h内定义的任何函数,自己定义一个函数 int strcat(char *str1,char * str2),完成把str2接到str1后的功能,
时间: 2024-03-17 13:43:39 浏览: 46
好的,我可以为您编写该函数。下面是代码实现:
```
int strcat(char *str1, char *str2) {
int len1 = 0, len2 = 0;
// 计算 str1 和 str2 的长度
while (str1[len1] != '\0') {
len1++;
}
while (str2[len2] != '\0') {
len2++;
}
// 将 str2 拼接到 str1 后面
for (int i = 0; i < len2; i++) {
str1[len1 + i] = str2[i];
}
// 结尾添加 '\0'
str1[len1 + len2] = '\0';
// 返回拼接后的字符串总长度
return len1 + len2;
}
```
该函数的实现原理是先计算出 str1 和 str2 的长度,然后将 str2 拼接到 str1 的末尾,并添加 '\0' 结尾符。最后返回拼接后的字符串长度。请注意使用时要确保 str1 有足够的长度来存储拼接后的字符串。
相关问题
输入两个字符串str1和str2(字符数均小于10),定义两个函数char *uf_strcat(char *str1,char *str2)和int uf_strlen(char *str1),实现连接字符串和计算字符串长度的功能,并输出。
好的,我会根据您的要求进行操作,下面是实现连接字符串和计算字符串长度的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *uf_strcat(char *str1, char *str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
char *result = (char *)malloc(sizeof(char) * (len1 + len2 + 1));
strcpy(result, str1);
strcat(result, str2);
return result;
}
int uf_strlen(char *str) {
int len = strlen(str);
return len;
}
int main() {
char str1[10], str2[10];
printf("请输入两个字符串:\n");
scanf("%s %s", str1, str2);
char *concat = uf_strcat(str1, str2);
printf("连接后的字符串为:%s\n", concat);
printf("连接后的字符串长度为:%d\n", uf_strlen(concat));
free(concat);
return 0;
}
```
在这段代码中,我们使用了标准库函数 `strlen()` 和 `strcpy()` 以及自定义函数 `uf_strlen()` 和 `uf_strcat()` 来实现字符串长度的计算和字符串连接的功能。其中,`uf_strlen()` 函数直接调用了 `strlen()` 函数,返回字符串的长度;而 `uf_strcat()` 函数则是先使用 `strlen()` 函数计算出两个字符串的长度之和,然后使用 `malloc()` 动态分配内存来存储连接后的字符串,最后使用 `strcpy()` 和 `strcat()` 函数将两个字符串拼接起来,返回拼接后的结果。
注意,为了避免内存泄漏,我们需要在使用 `malloc()` 分配内存后,最终使用 `free()` 函数释放掉这段内存。
#include <stdio.h>#include <string.h>void mystrcat(char *str1, char *str2) { strcat(str1, str2);}int main() { char str1[100], str2[100]; scanf("%s %s", str1, str2); mystrcat(str1, str2); printf("%s", str1); return 0;}注释
这段代码实现了字符串拼接功能,使用了C标准库中的`strcat`函数。具体来说,`strcat`函数会将第二个字符串(`str2`)拼接到第一个字符串(`str1`)的末尾。
在`mystrcat`函数中,我们直接调用了`strcat`函数,将第二个字符串拼接到第一个字符串中。需要注意的是,`strcat`函数会修改第一个字符串(`str1`)的内容,因此我们不需要再次为拼接后的字符串分配内存空间。
在`main`函数中,我们首先从标准输入中读入两个字符串,然后调用`mystrcat`函数将它们拼接起来,并将拼接后的字符串打印输出。
注意,这段代码没有对输入的字符串长度进行检查,可能会导致缓冲区溢出等问题。在真实的应用中,我们需要对输入字符串的长度进行限制和检查,以确保程序的安全性。
阅读全文