标准库中提供了一次读/写一个字符的函数,其中最简单的是getchar()和putchar()两个函数。getchar函数从文本流中读入下一个输入字符,并将其作为结果值返回。每次调用putchar函数时将打印一个字符。例如:
c = getchar(); putchar(c);
其中,getchar函数可以识别空格及换行符。例如,下面的代码输出空格和换行个数。
#include <stdio.h> /* 统计输入中的行数*/ int main() { int n1, n2, c; n1 = 0; n2 = 0; while((c = getchar()) != EOF) //判断输入是否结束,ctrl + D == EOF { if(c == '\n') //判断输入的是否是换行 ++n1; if(c == ' ') //判断输入是否为空格 ++n2; } printf("换行数: %d\t空格数: %d\n", n1, n2); }
其中需要注意的是,每次输入结束crtl+d
最后以一个小的练习题结束,编写一个将输入复制到输出的函数,并将其中连续的多个空格用一个空格代替。代码如下:
#include <stdio.h> int main() { int n_blank, c; n_blank = 0; while((c = getchar()) != EOF) { if(c != ' ') { putchar(c); n_blank = 0; } else if(n_blank == 0) { putchar(c); ++n_blank; } else ++n_blank; } }