C语言字符串交换不用指针
时间: 2024-10-11 13:01:12 浏览: 28
C语言指针实现字符串的反转
在C语言中,如果不需要使用指针来交换两个字符串,可以借助于数组来间接实现。假设我们有两个字符数组`str1`和`str2`,可以直接将其中一个字符串的内容复制到临时数组,再将另一个字符串的内容覆盖原位置,最后将临时数组的内容赋值给最后一个字符串。以下是简单的示例:
```c
#include <stdio.h>
#include <string.h>
void swapWithoutPointers(char str1[], char str2[]) {
// 将str2的内容复制到临时数组temp
size_t len1 = strlen(str1);
char temp[len1 + 1]; // 包含null字符
strcpy(temp, str2);
// 现在str2已经清空,将str1的内容复制回str2
strncpy(str2, str1, len1); // 注意这里不包括null字符
str2[len1] = '\0'; // 添加null字符
// 将临时数组的内容复制回str1
strcpy(str1, temp);
}
int main() {
char str1[] = "Hello";
char str2[] = "World";
printf("Before swap: str1 = %s, str2 = %s\n", str1, str2);
swapWithoutPointers(str1, str2);
printf("After swap: str1 = %s, str2 = %s\n", str1, str2);
return 0;
}
```
请注意,这种方法会改变原始字符串,不会像传统指针交换那样保持原始数据不变。另外,由于字符串是字符数组加上结束符'\0',所以需要额外处理。
阅读全文