《C程序设计语言(第2版新版)典藏版》 —1.5.3 行计数

举报
华章计算机 发表于 2019/12/04 19:59:44 2019/12/04
【摘要】 本节书摘来自华章计算机《C程序设计语言(第2版新版)典藏版》一书中第1章,第1.5.3节,作者是[美]布莱恩W. 克尼汉 (Brian W. Kernighan) 丹尼斯M. 里奇 (Dennis M. Ritchie),徐宝文 李志译 尤晋元 审校。

1.5.3   行计数

接下来的这个程序用于统计输入的行数。我们在上面提到过,标准库保证输入文本流以行序列的形式出现,每一行均以换行符结束。因此,统计行数等价于统计换行符的个数。

image.png

在该程序中,while循环语句的循环体是一个if语句,它控制自增语句++n1。if语句先测试圆括号中的条件,如果该条件为真,则执行其后的语句(或括在花括号中的一组语句)。这里再次用缩进方式表明语句之间的控制关系。

双等于号==是C语言中表示“等于”关系的运算符(类似于Pascal中的单等于号=及Fortran中的.EQ.)。由于C语言将单等于号=作为赋值运算符,因此使用双等于号==表示相等的逻辑关系,以示区分。这里提醒注意,在表示“等于”逻辑关系的时候(应该用==),C语言初学者有时会错误地写成单等于号=。在第2章我们将看到,即使这样误用了,其结果通常也是合法的表达式,因此系统不会给出警告信息。

单引号中的字符表示一个整型值,该值等于此字符在机器字符集中对应的数值,我们称之为字符常量。但是,它只不过是小的整型数的另一种写法而已。例如,'A'是一个字符常量,在ASCII字符集中其值为65(即字符A的内部表示值为65)。当然,用'A'要比用65好,因为'A'的意义更清楚,且与特定的字符集无关。

字符串常量中使用的转义字符序列也是合法的字符常量,比如,'\n'代表换行符的值,在ASCII字符集中其值为10。我们应当注意到,'\n'是单个字符,在表达式中它不过是一个整型数而已;而"\n"是一个仅包含一个字符的字符串常量。有关字符串与字符之间的关系,我们将在第2章进一步讨论。

练习1-8   编写一个统计空格、制表符与换行符个数的程序。

练习1-9   编写一个将输入复制到输出的程序,并将其中连续的多个空格用一个空格代替。

练习1-10   编写一个将输入复制到输出的程序,并将其中的制表符替换为\t,将回退符替换为\b,将反斜杠替换为\\。这样可以将制表符和回退符以可见的方式显示出来。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。