免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1526 | 回复: 3
打印 上一主题 下一主题

apue上的代码没搞懂 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-06-19 16:55 |只看该作者 |倒序浏览


  1. 代码出自 apue\termios\getpass.c

  2. #define        MAX_PASS_LEN        8                /* max #chars for user to enter */
  3.         static char                buf[MAX_PASS_LEN + 1];        /* null byte at end */
  4.         char                        *ptr;

  5. 。。。。。。。。。。。。。。。


  6. ptr = buf;
  7.         while ( (c = getc(fp)) != EOF && c != '\n') {
  8.                 if (ptr < &buf[MAX_PASS_LEN])//就是这里看不懂,ptr < &buf[MAX_PASS_LEN]是什么意思?
  9.                         *ptr++ = c;
  10.         }
  11.         *ptr = 0;                        /* null terminate */
  12.         putc('\n', fp);                /* we echo a newline */

  13. 。。。。。。。。。。。。。。。
复制代码

论坛徽章:
0
2 [报告]
发表于 2008-06-19 17:04 |只看该作者
就是防止内存越界啊

论坛徽章:
0
3 [报告]
发表于 2008-06-19 17:05 |只看该作者

回复 #1 dxbh 的帖子

[]的优先级比较高buf[MAX_PASS_LEN]是缓冲的最后一个单位。
取地址后就是最后一个单位的地址
ptr在循环中指到下一个可用的单位。
这个判断就是判断有没有溢出

论坛徽章:
0
4 [报告]
发表于 2008-06-19 17:20 |只看该作者
原帖由 figure_hit 于 2008-6-19 17:05 发表
[]的优先级比较高buf[MAX_PASS_LEN]是缓冲的最后一个单位。
取地址后就是最后一个单位的地址
ptr在循环中指到下一个可用的单位。
这个判断就是判断有没有溢出


是我一时sb,没看明白,现在明白了,thks
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP