《C语言接口与实现:创建可重用软件的技术》一1.5 习题

论坛 期权论坛 脚本     
已经匿名di用户   2022-7-2 22:15   1765   0

本节书摘来自异步社区《C语言接口与实现:创建可重用软件的技术》一书中的第1章,第1.5节,作者 傅道坤,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.5 习题

1.1 在一个单词结束于换行符时,getword在〈scan forward to a nonspace or EOF 5〉代码块中将linenum加1,而不是在〈copy the word intobuf[0..size-1] 5〉代码块之后。解释这样做的原因。如果在本例中,linenum的加1操作是在〈copy the word into buf[0..size-1] 5〉代码块之后进行,会发生什么情况?

1.2 当double在输入中发现3个或更多相同单词时会显示什么?修改double来改掉这个“特性”。

1.3 许多有经验的C程序员会在strcpy的循环中加入一个显式的比较操作:

char *strcpy(char *dst, const char *src) { 
  char *s = dst; 

  while ((*dst++ = *src++) != '\0')
    ; 
  return s; 
}

显式比较表明赋值操作并非笔误。一些C编译器和相关工具,如Gimpel Software的PC-Lint和LCLint[Evans,1996],在发现赋值操作的结果用作条件表达式时会发出警告,因为这种用法是一个常见的错误来源。如果读者有PC-Lint或LCLint,可以在一些“测试”过的程序上进行试验。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:81
帖子:4969
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP