1、封装子函数实现char *strcat(char *str,const char *dest)(8分)
时间: 2023-07-23 16:07:26 浏览: 77
可以使用以下代码来封装子函数实现`strcat`函数:
```c
char *strcat(char *str, const char *dest) {
char *temp = str;
// 将指针移到字符串末尾
while (*temp) {
temp++;
}
// 拷贝dest字符串到str末尾
while (*dest) {
*temp = *dest;
temp++;
dest++;
}
// 添加字符串结束符
*temp = '\0';
return str;
}
```
这个函数接受两个参数,`str`是目标字符串,`dest`是要追加的字符串。它会将`dest`字符串追加到`str`字符串的末尾,并返回拼接后的字符串。注意,这个函数假设`str`有足够的空间来容纳`dest`字符串的内容。
相关问题
编写函数字符串的联接char* StrCat(char *dst, const char *src);
函数字符串的联接是指将两个字符串连接在一起形成一个新的字符串。在C语言中,可以使用库函数`strcat`来实现字符串的联接。但是,如果你想自己编写一个字符串联接函数,可以参考下面的代码:
```c
char* StrCat(char *dst, const char *src) {
char *p = dst;
while (*p != '\0') {
p++;
}
while (*src != '\0') {
*p = *src;
p++;
src++;
}
*p = '\0';
return dst;
}
```
上述代码中,`StrCat`函数接受两个参数,`dst`表示目标字符串,`src`表示要追加的源字符串。函数首先找到目标字符串的末尾位置,然后将源字符串逐个字符复制到目标字符串的末尾,直到遇到源字符串的结束符`\0`。最后,将目标字符串的末尾设置为`\0`,表示字符串的结束。
实现以下函数 char *my_strcpy(char *dest,char const *src); char *my_strncpy(char *dest,char const *src,int len); char *my_strcat(char *dest,char const *src); char *my_strncat(char *dest,char const *src,int len); int my_strcmp(char *str1,char const *str2); int my_strncmp(char *srr1,char const *str2,int len);
下面是实现上述函数的示例代码:
```c
#include <stdio.h>
char *my_strcpy(char *dest, char const *src) {
char *temp = dest;
while ((*dest++ = *src++))
;
return temp;
}
char *my_strncpy(char *dest, char const *src, int len) {
char *temp = dest;
while (len > 0 && (*dest++ = *src++)) {
len--;
}
if (len > 0) {
*dest = '\0';
}
return temp;
}
char *my_strcat(char *dest, char const *src) {
char *temp = dest;
while (*dest) {
dest++;
}
while ((*dest++ = *src++))
;
return temp;
}
char *my_strncat(char *dest, char const *src, int len) {
char *temp = dest;
while (*dest) {
dest++;
}
while (len > 0 && (*dest++ = *src++)) {
len--;
}
if (len > 0) {
*dest = '\0';
}
return temp;
}
int my_strcmp(char *str1, char const *str2) {
while (*str1 && (*str1 == *str2)) {
str1++;
str2++;
}
return *(unsigned char *)str1 - *(unsigned char *)str2;
}
int my_strncmp(char *str1, char const *str2, int len) {
while (len > 0 && *str1 && (*str1 == *str2)) {
str1++;
str2++;
len--;
}
if (len == 0) {
return 0;
}
return *(unsigned char *)str1 - *(unsigned char *)str2;
}
int main() {
char dest[100] = "Hello";
char src[] = "World";
printf("strcpy: %s\n", my_strcpy(dest, src));
char dest2[100] = "Hello";
printf("strncpy: %s\n", my_strncpy(dest2, src, 3));
char dest3[100] = "Hello";
printf("strcat: %s\n", my_strcat(dest3, src));
char dest4[100] = "Hello";
printf("strncat: %s\n", my_strncat(dest4, src, 3));
char str1[] = "abc";
char str2[] = "abc";
printf("strcmp: %d\n", my_strcmp(str1, str2));
char str3[] = "abcd";
char str4[] = "abce";
printf("strncmp: %d\n", my_strncmp(str3, str4, 3));
return 0;
}
```
上述代码演示了如何实现 `my_strcpy`、 `my_strncpy`、 `my_strcat`、 `my_strncat`、 `my_strcmp` 和 `my_strncmp` 函数。你可以根据需要调用这些函数,并根据具体的参数和返回值进行相应的操作。