小白教程

 找回密码
 立即注册
查看: 9592|回复: 6

[已解决]C语言比较字符串大小

[复制链接]

1

主题

1

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2021-4-27 08:19:37 | 显示全部楼层 |阅读模式
  1. #include<stdio.h>
  2. #include<string.h>
  3. #define M 100
  4. int main()
  5. {
  6. char str1[M],str2[M];
  7. int a,i;
  8. printf("please input str1:");
  9. gets(str1);
  10. printf("please input str2:");
  11. gets(str2);
  12. for(i=0;i<M; )
  13. {if(str1[i]!=str2[i])
  14. a=str1[i]-str2[i];
  15. else i++;
  16. }
  17. printf("%d",a);
  18. return 0;
  19. }
复制代码
为什么不能运行
最佳答案
2021-5-25 08:55:40
  1. #include<stdio.h>
  2. #include<string.h>

  3. #define M 100

  4. int main()
  5. {
  6.     char str1[M],str2[M];
  7.     int a,i;
  8.     printf("please input str1:");
  9.     gets(str1);
  10.     printf("please input str2:");
  11.     gets(str2);
  12.     for(i=0;i<M; i++)
  13.     {
  14.         if(str1[i] != str2[i]) {
  15.             a = str1[i]-str2[i];
  16.             break;
  17.         }
  18.     }
  19.     printf("%d\n",a);
  20.     return 0;
  21. }
复制代码

楼主的代码可能是死循环了。因为如果进入if分支,那么i是不会自增的,那么这个时候就是死循环了。
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-5-1 15:20:32 | 显示全部楼层
没太懂你是想怎么比较字符串,不能运行的原因是因为你代码中如果满足if的调节,i永远不会增加,所以在那死循环了
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-5-5 03:20:01 | 显示全部楼层
就只比较第一个不同的
回复

使用道具 举报

0

主题

3

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2021-5-8 21:19:57 | 显示全部楼层
那么可以把i++上的else去掉,在上面的if语句里的末尾加break
回复

使用道具 举报

0

主题

2

帖子

3

积分

新手上路

Rank: 1

积分
3
发表于 2021-5-16 15:17:25 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<string.h>
  3. #define M 100
  4. int main()
  5. {
  6.     char str1[M], str2[M];
  7.     int a, i;
  8.     printf("please input str1:");
  9.     gets_s(str1);
  10.     printf("please input str2:");
  11.     gets_s(str2);
  12.     for (i = 0; i < M; )
  13.     {
  14.         if (str1[i] != str2[i]) {
  15.             a = str1[i] - str2[i];
  16.             break;
  17.         }
  18.         i++;
  19.     }
  20.     printf("%d", a);
  21.     return 0;
  22. }
复制代码
回复

使用道具 举报

0

主题

2

帖子

4

积分

新手上路

Rank: 1

积分
4
发表于 2021-5-20 00:29:57 | 显示全部楼层
最好把a初始化为0
回复

使用道具 举报

0

主题

1

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2021-5-25 08:55:40 | 显示全部楼层 &
  1. #include<stdio.h>
  2. #include<string.h>

  3. #define M 100

  4. int main()
  5. {
  6.     char str1[M],str2[M];
  7.     int a,i;
  8.     printf("please input str1:");
  9.     gets(str1);
  10.     printf("please input str2:");
  11.     gets(str2);
  12.     for(i=0;i<M; i++)
  13.     {
  14.         if(str1[i] != str2[i]) {
  15.             a = str1[i]-str2[i];
  16.             break;
  17.         }
  18.     }
  19.     printf("%d\n",a);
  20.     return 0;
  21. }
复制代码

楼主的代码可能是死循环了。因为如果进入if分支,那么i是不会自增的,那么这个时候就是死循环了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|小白教程 ( 粤ICP备20019910号 )

GMT+8, 2024-9-20 12:20 , Processed in 0.028417 second(s), 28 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表