1163028233 发表于 2021-12-14 22:22:15

C语言字符串的比较问题

找出三个字符串中的最小者
#include<stdio.h>
#include<string.h>
int main(){
    char str,s;
    int i;
    for(i=0;i<3;i++)
       gets(s);
    if(strcmp(s,s)<0)
       strcpy(str,s);
    else
       strcpy(str,s);
    if(strcmp(s,str)<0)
       strcpy(str,s);
    printf("最小字符串是:\n%s\n",str);
}

第十三行if(strcmp(s,str)<0),如果改成if(strcmp(str,s)<0)就错了,为什么不能改成if(strcmp(str,s)<0)?

jackz007 发表于 2021-12-14 23:00:22

      你修改第 13 行代码的意图是什么?a - b 和 b - a 的结果能一样吗?

1163028233 发表于 2021-12-14 23:06:48

jackz007 发表于 2021-12-14 23:00
你修改第 13 行代码的意图是什么?a - b 和 b - a 的结果能一样吗?

我想搞清楚strcmp(字符串1,字符串2),字符串1和字符串2在不同位置代表的含义或者说用法有什么不同。我的理解是strcmp是对字符串进行比较的,假如字符串1比字符串2小,strcmp(字符串1,字符串2)与strcmp(字符串2,字符串1)所得到的结果应该是一样的啊?

小亦003 发表于 2021-12-14 23:09:17

返回一个整数表示两个字符串的大小关系:

返回值       含义
< 0             字符串 1 的字符小于字符串 2 对应位置的字符
0                两个字符串的内容完全一致
> 0             字符串 1 的字符大于字符串 2 对应位置的字符

str与s放前后位置不同,反回值也不同,再与<0比较,当然就错了

jackz007 发表于 2021-12-14 23:48:19

1163028233 发表于 2021-12-14 23:06
我想搞清楚strcmp(字符串1,字符串2),字符串1和字符串2在不同位置代表的含义或者说用法有什么不同。我的 ...

         如果一样的话,那你告诉我,你如何判断是字符串1大还是字符串2大?
页: [1]
查看完整版本: C语言字符串的比较问题