第一章 简介

1.1getwordincrements linenumin scan forward to a nonspace or

EOF6but not after copy the word into buf[0..size-1]7when a

word endsat a new-line character. Explain why. What would happen if linenumwere incremented in this case?

在<scan forward to a nonspace or EOF 6>中将linenum加1,是因为‘\n‘也属于空白字符。
如果linenum在<copy the word into buf[0..size-1] 7>之后linenum加1这样对‘\n‘的统计就不准确了,例如有连续空行的时候。

1.2 What does doubleprint when it sees three or more identical

words in its input? Change doubleto fix this “feature.”

当出现连续3个或者3个以上的相同单词时,假如n个,则将会打印n-1个。
fix:
=====
if (isalpha(word[0]) && strcmp(prev, word)==0)
    <wordis a duplicate 8>
strcpy(prev, word);
=====
if (isalpha(word[0]) && strcmp(prev, word)==0) {
    <wordis a duplicate 8>
    world[0] = ‘\0‘;
}
strcpy(prev, word);

1.3 Many experienced C programmers would include an explicit comparison in strcpy’s loop:

char *strcpy(char *dst, const char *src) {

char *s = dst;

while ((*dst++ = *src++) != ‘\0‘)

;

return s;

}

The explicit comparison makes it clear that the assignment isn’t a

typographical error. Some C compilers and related tools, like

Gimpel Software’s PC-Lint and LCLint (Evans 1996), issue a warning when the result of an assignment is used as a conditional,

because such usage is a common source of errors. If you have PCLint or LCLint, experiment with it on some “tested” programs.

编程风格问题,对于一些条件语句加些显示的判断会使程序看上去清晰很多。

时间: 2024-10-09 23:05:25

第一章 简介的相关文章

读书笔记 - javascript 高级程序设计 - 第一章 简介

第一章 简介   诞生时间 1995 最初用途 客服端验证 第一版标准 注意是标准 1997年 Ecma-262  一个完整的js实现由三部分组成 ECMAScript DOM 文档对象模型 BOM 浏览器对象模型 ECMAScript的宿主环境 web浏览器 Node(服务器js平台) adobe flash js和as的关系 他们都实现了 ECMAScript 五大主流浏览器 IE Firefox Safari Chrome Opera dom介绍 它是针对xml但经过扩展用于html的应用

《Java并发变成实践》读书笔记---第一章 简介

<Java并发编程实战>深入浅出地介绍了Java线程和并发,是一本完美的Java并发参考手册.书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险.构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁.原子变量.非阻塞算法以及

Lush手册——第一章 简介

简介 本章将展示Lush及其能力与特性. 1.1 Lush展示 Lush是一门面向对象的编程语言,是为对大规模数值运算与图形化应用感兴趣的研究人员.实验人员和工程师设计的.Lush用于以下场景,即想要将高级的.弱类型的解释性语言的灵活性,强类型的.本地编译型的语言的高效性,还有与C.C++等语言编写的代码容易结合这些特性组合在一起. 在与解释型语言(如Python.Perl.Matlab.S+甚至BASIC)和使用编译型语言(例如C语言)结合的相关工程上,Lush的优势尤其意义重大.通过使用Lu

UNP学习笔记(第一章 简介)

环境搭建 1.下载解压unpv13e.tar.gz 2.进入目录执行 ./configurecd lib //进入lib目录make //执行make命令 3.将生成的libunp.a静态库复制到/usr/lib/和/usr/lib64/中 cd .. //返回unpv13e目录sudo cp libunp.a /usr/lib sudo cp libunp.a /usr/lib64 4.修改unp.h并将其和config.h拷贝到/usr/include中,为了以后include方便 vi l

Ruby on Rails Tutorial 第一章 简介

1.目标:掌握MVC和REST.生成器.迁移.路由.嵌入式Ruby 本书涉及Rails,Ruby语言,Rails默认使用的测试框架(MiniTest),Unix命令行,HTML,CSS,少量的JavaScript,以及一点SQL. 2.演示应用: hello_app(1.3节) toy_app(第2章) sample_app(第3章到第12章) 3.Ruby on Rails(简称Rails)成功的关键: (1)Rails完全开源,基于MIT协议发布,可以免费下载.使用: (2)Rails的设计

[Java 并发] Java并发编程实践 思维导图 - 第一章 简介

阅读<Java并发编程实践>一书后整理的思维导图.

《深入Linux内核架构》笔记 --- 第一章 简介和概述

Linux将虚拟地址空间划分为两个部分,分别称为内核空间和用户空间 各个系统进程的用户空间是完全彼此分离的,而虚拟地址空间顶部的内核空间总是同样的,无论当前执行的是哪个进程. 尽管Intel处理器区分4中特权级别,当Linux只使用两种不同的状态:核心态和用户态.两种状态的关键差别在于对高于TASK_SIZE的内存区域的访问. 在中断上下文中运行不能访问虚拟地址空间中的用户空间部分.CPU大多数时间都在执行用户空间的代码,当应用程序执行系统调用时,则切换到核心态,内核将完成其请求.在此期间,内核

OSGi原理与最佳实践:第一章 OSGi框架简介(2)

OSGi原理与最佳实践:第一章 OSGi框架简介(2) 由  ValRay 发布 已被浏览4884次 共有3条评论 已被3个人收藏 2013-08-16 21:23 顶(0) 踩(0) osgi原理与最佳实践 1.1.4 开发传统类型的应用 1.1.4.1 B/S 我们首先来看一下,如何基于 OSGi 来开发 B/S 结构的应用.B/S 结构应用程序的开发,可有两个选择:一个是在 OSGi 的框架中嵌入 Http 服务器,另外一个是在 Servlet 容器中嵌入 OSGi 框架.下面分别介绍这两

OSGi原理与最佳实践:第一章 OSGi框架简介(5)Spring-DM

OSGi原理与最佳实践:第一章 OSGi框架简介(5)Spring-DM 由  ValRay 发布 已被浏览8409次 共有3条评论 已被2个人收藏 2013-08-16 21:29 顶(1) 踩(0) osgi原理与最佳实践 1.3 Spring-DM 1.3.1 简介 Spring-DM 指的是 Spring Dynamic Modules.Spring-DM 的主要目的是能够方便地将 Spring 框架 和OSGi框架结合在一起,使得使用Spring的应用程序可以方便简单地部署在OSGi环