两个字符串str1,str2,若str1大于str2则进行交换,否则不交换。设计程序实现该功能,要求str1和str2由键盘输入给定。提示:字符串大小比较和赋值无法用关系运算符”>”和赋值运算符”=”来实现,需调用字符串函数strcmp和strcpy进行比较和交换。
时间: 2024-12-14 15:28:51 浏览: 24
要实现这个功能,你可以使用C标准库中的`strcmp()`函数来进行字符串比较,以及`strcpy()`函数来复制字符串。如果`str1`大于`str2`,则需要交换它们的内容。这里是一个简单的程序示例:
```c
#include <stdio.h>
#include <string.h>
// 检查并交换两个字符串
void swapIfGreater(char *str1, char *str2) {
int comparison = strcmp(str1, str2);
// 如果str1大于str2(即comparison为正)
if (comparison > 0) {
// 使用strcpy复制str2到临时变量temp
char temp[strlen(str2) + 1];
strcpy(temp, str2);
// 清空str2
memset(str2, '\0', strlen(str2));
// 将str1的内容复制回str2
strcpy(str2, str1);
// 将temp的内容复制回str1
strcpy(str1, temp);
}
}
int main() {
char str1[50], str2[50];
printf("Enter string 1: ");
fgets(str1, sizeof(str1), stdin); // 注意去掉末尾的换行符
str1[strcspn(str1, "\n")] = '\0'; // 去掉换行符
printf("Enter string 2: ");
fgets(str2, sizeof(str2), stdin);
str2[strcspn(str2, "\n")] = '\0';
swapIfGreater(str1, str2);
printf("After swapping, string 1 is %s and string 2 is %s\n", str1, str2);
return 0;
}
```
在这个程序中,`swapIfGreater`函数首先比较两个字符串,然后根据结果交换它们的位置。注意,由于`fgets`可能带来多余的换行符,所以在读取后,需要手动移除换行符。
阅读全文