c语言数组有关字符串的问题

img


为什么说我这个是无效数组排列?数组不能和变量一样吗?传递变量值?如何解决呢

img


我编的代码是为了解决练一练的题目,我看题想的上面的代码

下面是我的理解,供参考:

1、因为字符数组名是不可变的,所以对其赋值是错误的,如果要复制字符数组里面的字符,可以使用strcpy()函数;

2、然后,使用scanf()函数获取字符串使用逗号分隔会让正确获取输入变得比较复杂,因为scanf()获取字符串默认以空白字符(即空格,制表符,或换行符)分隔字符串,所以可以改为两个%s之间加个空格或不加也可以;

3、再是,打印字符数组里面的字符串,需要使用%s.

4、最后,在while最后再加个scanf(),获取下次需要比较的字符串到数组str1和str2中。

修改如下:

参考链接:


https://www.hyluz.cn/post/506.html

https://baike.baidu.com/item/scanf/10773316?fr=aladdin

#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;
} 

img

用逗号是不能分隔字符串输入的
用%c输出字符串也是错的

供参考:

img

把第三行改为scanf("%s %s",&str1,&str2);
把第十三行改为printf("%s %s",str1,str2);
把第十九行改为printf("%s %s",str1,str2);

望采纳