C语言字符串交换函数
时间: 2024-10-11 08:11:04 浏览: 11
在C语言中,由于C标准库并没有直接提供字符串交换的函数,所以通常我们会通过字符数组来间接实现字符串的交换。这里介绍一种常见的手动交换字符串的方法:
```c
#include <stdio.h>
#include <string.h>
void swap(char* str1, char* str2) {
// 确保两个指针都指向有效的内存区域
if (str1 && str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
// 创建临时变量存储第一个字符串的内容
char temp[len1 + 1]; // 需要加1以包括空字符'\0'
strncpy(temp, str1, len1); // 复制第一个字符串到temp
// 将第二个字符串覆盖到第一个的位置
memmove(str1, str2, len2 + 1); // +1是因为str2也是包含空字符的
// 将临时变量的内容复制回第一个字符串原位置
memmove(str2, temp, len1 + 1);
}
}
int main() {
char str1[] = "Hello";
char str2[] = "World";
printf("Before swapping: str1 = %s, str2 = %s\n", str1, str2);
swap(str1, str2);
printf("After swapping: str1 = %s, str2 = %s\n", str1, str2);
return 0;
}
```
在这个`swap`函数中,我们首先计算出两个字符串的长度,然后创建一个临时数组存储`str1`的内容,再将`str2`的内容移动到`str1`原来的位置,最后将临时数组的内容移动回`str2`。