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

    xiaoxiao2024-04-08  99

    本节书摘来自异步社区《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)