c语言编写函数void my_strcat(char str1[],char str2[]),实现字符串连接。
时间: 2024-01-14 15:01:53 浏览: 201
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语言运用指针数组参数编写函数实现字符串连接 void strcat(char *str1, char *str2)
在 C 语言中,你可以通过指针数组参数实现字符串连接,但是 `strcat` 函数本身并不是用于处理指针数组的,它是一个标准库函数,用于将字符串 str2 追加到字符串 str1 的末尾。如果你想要用指针数组,你可能会创建一个类似自定义函数的例子,这里我为你演示一个简单的模拟版本:
```c
#include <stdio.h>
#include <string.h>
// 自定义的字符串连接函数,接收两个指向字符数组的指针
void concatenate_strings(char** arr, int n) {
// 检查输入是否为空
if (n <= 0 || !arr[0]) return;
char* current = arr[0]; // 首先设置为第一个字符串
for (int i = 1; i < n; i++) {
// 将当前字符串的结束位置更新为下一个字符串的开始位置
char* end_of_current = current + strlen(current);
memmove(end_of_current, arr[i], strlen(arr[i]) + 1); // 移动剩余空间
current = end_of_current; // 更新当前字符串地址
}
}
int main() {
char strings[] = {"Hello, ", "world!"};
int n = sizeof(strings) / sizeof(strings[0]);
concatenate_strings(&strings, n);
printf("Concatenated string: %s\n", strings);
return 0;
}
```
在这个例子中,`concatenate_strings` 函数接受一个指针数组 `arr` 和其长度 `n`。它遍历数组,每次迭代都将一个字符串追加到前一个字符串的末尾。注意,这只是一个简化的模拟,实际应用中你需要考虑内存分配、内存管理以及错误检查。
编写函数实现字符串连接void strcat(char *str1, char *str2)
`strcat()` 函数是一个C语言标准库函数,用于将第二个字符串 (`str2`) 连接到第一个字符串 (`str1`) 的末尾。这个操作不会改变 `str1` 的原始长度,而是直接在其内存空间内添加 `str2`。下面是一个简单的 C 语言实现:
```c
#include <string.h> // 包含 strncat 函数声明
void strcat(char *str1, const char *str2) {
// 检查 str1 是否为空,如果是,则直接复制 str2
if (str1 == NULL) {
strcpy(str1, str2);
return;
}
// 找到 str1 的结束位置,即最后一个字符的下一个位置
char *end = str1 + strlen(str1);
// 将 str2 的内容逐字节复制到 end 位置
while (*str2 != '\0') {
*end++ = *str2++;
}
// 结束符 '\0' 表示字符串结束,也需要追加到 str1
*end = '\0';
}
```
在这个实现中,我们首先检查 `str1` 是否为空,如果为空则直接用 `strcpy()` 复制整个 `str2` 到 `str1`。然后找到 `str1` 的末尾,并逐个将 `str2` 中的字符复制过去,直到遇到 `\0` 字符。最后在 `end` 位置添加一个`\0` 结束字符串。
阅读全文