📅  最后修改于: 2023-12-03 15:14:25.495000             🧑  作者: Mango
在C语言中,可以使用函数来交换两个字符串。在本文中,将介绍三种不同的方法来实现字符串交换。
此方法使用一个临时变量来存储第一个字符串的值,并将第二个字符串的值赋给第一个字符串,最后将临时变量的值赋给第二个字符串。
#include <stdio.h>
#include <string.h>
void swap(char *str1, char *str2) {
char temp[strlen(str1)+1];
strcpy(temp, str1);
strcpy(str1, str2);
strcpy(str2, temp);
}
int main() {
char str1[] = "Hello";
char str2[] = "World!";
printf("Before swap: str1 = %s, str2 = %s\n", str1, str2);
swap(str1, str2);
printf("After swap: str1 = %s, str2 = %s\n", str1, str2);
return 0;
}
这里使用了strcpy
函数来复制字符串。注意,为了避免内存泄漏,需要为临时变量分配足够的空间。
此方法通过交换指向两个字符串的指针来实现交换。这种方法比使用临时变量更高效,因为它不需要复制整个字符串。
#include <stdio.h>
void swap(char **str1, char **str2) {
char *temp = *str1;
*str1 = *str2;
*str2 = temp;
}
int main() {
char *str1 = "Hello";
char *str2 = "World!";
printf("Before swap: str1 = %s, str2 = %s\n", str1, str2);
swap(&str1, &str2);
printf("After swap: str1 = %s, str2 = %s\n", str1, str2);
return 0;
}
这里使用了指向指针的指针来交换两个字符串。注意,如果传递给函数的是指向字符串的指针,则只会交换指针本身,而不会交换字符串。
此方法使用数组下标来交换两个字符串中的字符。这种方法非常简单,但是对于长字符串来说,效率可能不高。
#include <stdio.h>
#include <string.h>
void swap(char *str1, char *str2) {
int len1 = strlen(str1);
int len2 = strlen(str2);
char temp[len1+1];
strcpy(temp, str1);
for(int i=0; i<=len2; i++) {
str1[i] = str2[i];
}
for(int i=0; i<=len1; i++) {
str2[i] = temp[i];
}
}
int main() {
char str1[] = "Hello";
char str2[] = "World!";
printf("Before swap: str1 = %s, str2 = %s\n", str1, str2);
swap(str1, str2);
printf("After swap: str1 = %s, str2 = %s\n", str1, str2);
return 0;
}
这里使用了数组下标来遍历两个字符串中的字符。注意,与方法一类似,需要为临时变量分配足够的空间。
总之,这三种方法都可以用来交换两个字符串。方法二(使用指针)是最高效的方法,而方法三(使用数组下标)是最简单的方法。