鱼C论坛

 找回密码
 立即注册
查看: 4587|回复: 5

c函数作用不明白

[复制链接]
发表于 2012-9-2 20:12:28 | 显示全部楼层 |阅读模式
2鱼币
  1. #include<stdio.h>
  2. #include<string.g>
  3. int main()
  4. {
  5. char *s1="AbDeG";
  6. char *s2="AbdEg";
  7. s1+=2;s2+=2;
  8. printf("%d\n",strcmp(s1,s2)'
  9. return (0);
  10. }
复制代码
已知strcmp是两个数比较,但上面代码是怎样比较?求帮助!!!

最佳答案

查看完整内容

刚学C不久, 我觉得那里有一个s1=s1+2; s2=s2+2; 字符串原来是AbDeG会不会变成DeG, 而字符串是AbdEg会不会变成dEg, 之后strcmp(s1, s2);会不会就是比较DeG与dEg了 当输出是0时, 说明s1, s2相等, 当输出是一个正整数时, 说明s1大于s2, 当输出为一个负数时, 那么s2大于s1, 书上有的, 那本C程序设计(第四版)谭浩强的, 第P165页
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-9-2 20:12:29 | 显示全部楼层
本帖最后由 喜欢散步 于 2012-9-3 16:08 编辑

刚学C不久, 我觉得那里有一个s1=s1+2; s2=s2+2;
字符串原来是AbDeG会不会变成DeG,
而字符串是AbdEg会不会变成dEg,
之后strcmp(s1, s2);会不会就是比较DeG与dEg了
当输出是0时, 说明s1, s2相等,
当输出是一个正整数时, 说明s1大于s2,
当输出为一个负数时, 那么s2大于s1,
书上有的, 那本C程序设计(第四版)谭浩强的, 第P165页


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-2 21:11:58 | 显示全部楼层
s1和s2都是字符串指针,指向一个字符串,当执行s1+=2时,s1所指向的字符串就是“DeG”,因为s1的首地址加了3个字符的长度(为什么是3个不用我解释吧,字符串的第一个字符的下标是0开始的),s2同上,所以指向“dEg”字符串,比较时就会把这两个字符串的各个字符转换成ASCII码,然后各个字符的ASCII码相加再比较,D<d 并且 d - D =32, e - E = 32, g -G = 32(不懂这个怎么算,查ASCII码表),大小不用我说了吧,数已经给你算出来了:$
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-2 22:22:43 | 显示全部楼层
个人认为一楼的前面很对但是后面关于函数strcmp的解释有一点小错误,从上面的例子来看比较的的确是“DeG"和”dEg"但是比较的时候是两个字符串自左向右逐个字符相比也就是在“D”和“d"相比的时候因为d的ASCII码的值大于D所以返回值应该是小于0的,后面的字符就不再比较
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-2 22:55:37 | 显示全部楼层
  1. #include<stdio.h>

  2. #include<string.h>                // 头文件  .h 结尾啊

  3. int main()

  4. {
  5.        
  6.         char *s1="AbDeG";
  7.        
  8.         char *s2="AbdEg";
  9.        
  10.         s1+=2;s2+=2;
  11.        
  12.         printf("%d\n",strcmp(s1,s2));               

  13.         return (0);
  14.        
  15. }
复制代码
你的程序就有点错误  我帮你改正 了一下
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-9-4 14:22:35 | 显示全部楼层
楼主难不成想自己实现strcmp 初学者..会用就行,,,别这么为什么,那个为什么的!不要钻牛角尖
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 23:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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