标准库提供的一次读写一个字符的函数
- getchar() 读入字符
- putchar() 读出字符
//test_3
//将输入一次一个字符的复制到输出
#include <stdio.h>
int main()
{
char c;
int count=0, line=0,space=0,tab=0;
while ((c=getchar())!=EOF) { //可拆成两个语句,输入c=getchar(); 判断c!=EOF;
count++; //统计字符个数
if ( c == '\t' ) //设置退出循环条件 break
break;
if (c==' ')
space++; //统计空格的个数
if (c=='\n')
line++; //统计行数
}
putchar(c); //输出
}
printf("count=%d,line=%d,space=%d\n", count, line, space);
return 0;
}
文件结束 EOF (end of file)
- 符号常量
退出循环的方式
- 判断条件为假
- 执行过程中遇到break语句
- 执行过程中遇到goto,且指向循环外侧
- 执行过程中遇到return语句,直接退出函数且退出循环
//test_4
//单词计数
#include <stdio.h>
#define INWORD 1 //用符号常量处理magic number
#define OUTWORD 0
int main()
{
char c;
int count = 0, state = OUTWORD;
while ( ( c = getchar() ) != EOF ) {
if ( c == '.' )
break;
if ( c == ' ' || c == '\t' || c == '\n' ) { //单词是不包含任何空格,制表符,换行符的字符序列
state = OUTWORD;
}
else if ( state == OUTWORD ) { //以读到一个单词的第一个字符作为加入一个新单词的判断依据
state = INWORD;
count++;
}
}
printf("count=%d\n", count);
return 0;
}