为什么说我这个是无效数组排列?数组不能和变量一样吗?传递变量值?如何解决呢
我编的代码是为了解决练一练的题目,我看题想的上面的代码
下面是我的理解,供参考:
1、因为字符数组名是不可变的,所以对其赋值是错误的,如果要复制字符数组里面的字符,可以使用strcpy()函数;
2、然后,使用scanf()函数获取字符串使用逗号分隔会让正确获取输入变得比较复杂,因为scanf()获取字符串默认以空白字符(即空格,制表符,或换行符)分隔字符串,所以可以改为两个%s之间加个空格或不加也可以;
3、再是,打印字符数组里面的字符串,需要使用%s.
4、最后,在while最后再加个scanf(),获取下次需要比较的字符串到数组str1和str2中。
修改如下:
参考链接:
#include <stdio.h>
#include <string.h>
int main(void){
int k;
printf("输入两个字符串:");
char str1[30],str2[30],str3[30];
// https://baike.baidu.com/item/scanf/10773316?fr=aladdin
scanf("%s %s",str1,str2); //在scanf()获取字符串不需要使用逗号分隔
// printf("s1=%s --- s2=%s\n",str1,str2);
while(1){
k=strcmp(str1,str2);
if(k>0){
// // https://blog.csdn.net/weixin_63279307/article/details/128412296
printf("%s %s\n",str1,str2); // 打印字符数组里的字符串使用%s即可
}else if(k<0){
//https://www.hyluz.cn/post/506.html
// https://baike.baidu.com/item/strcpy/5494519?fr=aladdin
strcpy(str3,str1); // 复制str1中的字符串到str3中
strcpy(str1,str2); // 复制str2中的字符串到str2中
strcpy(str2,str3); // 复制str3中的字符串到str2中
printf("%s %s\n",str1,str2);
}else if(k==0){
printf("请输入两个不同大小的字符串:");
}
scanf("%s %s",str1,str2); // 获取下次需要比较的字符串到字符数组str1和str2中
// printf("s1=%s -- s2=%s\n",str1,str2);
}
return 0;
}