使用指针,交换两个数组对应的元素
方法一:
#include <stdio.h>
#include <string.h>
int main() {
printf("请输入两个字符串:");
char arr1[80];
char arr2[80];
fgets(arr1, sizeof(arr1), stdin); // 使用 fgets 获取输入的字符串,并限制最长长度
fgets(arr2, sizeof(arr2), stdin); // 使用 fgets 获取输入的字符串
char* p = arr1;
char* q = arr2;
int len1 = strlen(arr1);
int len2 = strlen(arr2);
// 去除换行符,避免换行符影响
if (len1 > 0 && arr1[len1 - 1] == '\n') {
arr1[len1 - 1] = '\0';
}
if (len2 > 0 && arr2[len2 - 1] == '\n') {
arr2[len2 - 1] = '\0';
}
p = arr1; // 重新指向字符串开头
q = arr2; // 重新指向字符串开头
// 交换对应位置的字符
for (int i = 0; i < len1 && i < len2; i++) {
char temp = *p;
*p = *q;
*q = temp;
p++;
q++;
}
printf("%s\n%s\n", arr1, arr2);
return 0;
}
方法二:
#include <stdio.h>
#include <string.h>
void swapStrings(char* str1, char* str2) {
while (*str1 != '\0' && *str2 != '\0') {
char temp = *str1;
*str1 = *str2;
*str2 = temp;
str1++;
str2++;
}
}
int main() {
printf("请输入两个字符串:");
char arr1[80];
char arr2[80];
fgets(arr1, sizeof(arr1), stdin); // 使用 fgets 获取输入的字符串
fgets(arr2, sizeof(arr2), stdin); // 使用 fgets 获取输入的字符串
// 去除换行符
if (strlen(arr1) > 0 && arr1[strlen(arr1) - 1] == '\n') {
arr1[strlen(arr1) - 1] = '\0';
}
if (strlen(arr2) > 0 && arr2[strlen(arr2) - 1] == '\n') {
arr2[strlen(arr2) - 1] = '\0';
}
swapStrings(arr1, arr2);
printf("%s\n%s\n", arr1, arr2);
return 0;
}
实现效果: