C语言统计输入的行数
接下来的这个程序用于统计输入中的行数。我们在上面提到过,标准库保证输入文本流以行序列的形式出现,每一行均以换行符结束。因此,统计行数等价于统计换行符的个数。
#include <stdio.h> /* count lines in input */ main() { int c, nl; nl = 0; while ((c = getchar()) != EOF) if (c == '\n') ++nl; printf("%d\n", nl); }
在该程序中,while 循环语句的循环体是一个 if 语句,它控制自增语句++nl。if 语句先测试圆括号中的条件,如果该条件为真,则执行其后的语句(或括在花括号中的一组语句)。这里再次用缩进方式表明语句之间的控制关系。
双等于号==是 C 语言中表示“等于”关系的运算符(类似于 Pascal 中的单等于号=及 Fortran 中的.EQ.)。由于 C 语言将单等于号=作为赋值运算符,因此使用双等于号==表示相等的逻辑关系,以示区分。这里提醒注意,在表示“等于”逻辑关系的时候(应该用==),C 语言初学者有时会错误地写成单等于号=。在后面我们将看到,即使这样误用了,其结果通常仍然是合法的表达式,因此系统不会给出警告信息。
单引号中的字符表示一个整型值,该值等于此字符在机器字符集中对应的数值,我们称之为字符常量。但是,它只不过是小的整型数的另一种写法而已。例如,'A'是一个字符常量;在 ASCII 字符集中其值为 65(即字符 A 的内部表示值为 65)。当然,用'A'要比用 65 好,因为。'A'的意义更清楚,且与特定的字符集无关。
字符串常量中使用的转义字符序列也是合法的字符常量,比如,'\n'代表换行符的值,在 ASCII 字符集中其值为 10。我们应当注意到,'\n'是单个字符,在表达式中它不过是一个整型数而已;而"\n"是一个仅包含一个字符的字符串常量。
下面编写一个统计空格、制表符与换行符个数的程序。
#include <stdio.h> main() { /* blanks, tabs, and newlines */ int c, nb, nt, nl; nb = 0; nt = 0; nl = 0; while( (c = getchar()) != EOF) { if(c == ' ') ++nb; if(c == '\t') ++nt; if(c == '\n') ++nl; } printf("%d %d %d \n", nb, nt, nl); }

本文仅供自己学习与收藏之用,请勿转载,请勿用作其它用途(如商业目的等)。 原文链接:http://www.nowamagic.net/librarys/posts/c/176