1.5 字符输入/输出
2016-03-05 16:00
92 查看
标准库提供的输入/输出模型非常简单.无论文本从何处输入,输出到何处,其输入/输出都是按照字符流的方式处理.文本流是由多行字符构成的字符序列,而每行字符则由0个或多个字符组成.行末是一个换行符.标准库负责每个输入/输出流都能遵守这一模型.
标准库提供一次读/写一个字符的函数,其中最简单的是getchar和putchar函数.
每次调用时,getchar函数从文本流中读入下一个输入字符,并将其作为结果值返回.
每次调用putchar函数时将打印一个字符.
1.5.1 文件复制
EOF(end of file) = -1
Windows中 EOF为Ctrl+z
Linux中 EOF为Ctrl+d
上面的字符复制程序可以精炼为:
(c=getchar())!=EOF 与c=getchar()!=EOF 不同
c=getchar()!=EOF 等价于 c=(getchar()!=EOF)
该语句执行后c的值将置为0或1
1.5.2 字符计数
1.5.3 行计数
1.5.4 单词计数
程序执行时,每当遇到单词的第一个字符,就作为一个新的单词加以统计.
标准库提供一次读/写一个字符的函数,其中最简单的是getchar和putchar函数.
每次调用时,getchar函数从文本流中读入下一个输入字符,并将其作为结果值返回.
每次调用putchar函数时将打印一个字符.
1.5.1 文件复制
#include<stdio.h> int main() { int c; c = getchar(); while (c!=EOF) { putchar(c); c = getchar(); } return 0; }
EOF(end of file) = -1
Windows中 EOF为Ctrl+z
Linux中 EOF为Ctrl+d
上面的字符复制程序可以精炼为:
#include<stdio.h> int main() { int c; while ((c=getchar())!=EOF) { putchar(c); } return 0; }
(c=getchar())!=EOF 与c=getchar()!=EOF 不同
c=getchar()!=EOF 等价于 c=(getchar()!=EOF)
该语句执行后c的值将置为0或1
1.5.2 字符计数
#include<stdio.h> int main() { long nc=0; while (getchar() != EOF) { nc++; } printf("%ld\n", nc); return 0; }
#include<stdio.h> int main() { long nc; for (nc = 0; getchar()!=EOF; nc++) { ; } printf("%ld\n", nc); return 0; }
1.5.3 行计数
#include<stdio.h> int main() { int c, nl; nl = 0; while ((c=getchar())!=EOF) { if (c=='\n') { nl++; } } printf("%d\n", nl); return 0; }
1.5.4 单词计数
#include<stdio.h> #define IN 1 //在单词内 #define OUT 0 //在单词外 int main() { int c; int nline, nword, nchar; int state = OUT; nline = nword = nchar = 0; while ((c = getchar()) != EOF) { if (c == '\n') { nline++; } if (c == ' ' || c == '\n' || c == '\t') { state = OUT; } else if (state == OUT) { state = IN; nword++; } nchar++; } printf("nline=%d\nnword=%d\nnchar=%d\n", nline, nword, nchar); return 0; }
程序执行时,每当遇到单词的第一个字符,就作为一个新的单词加以统计.
相关文章推荐
- 构建之法 读后感(总)
- 用 lightTreeview 实现树形分类菜单的功能 展开收缩分类代码
- win7_oracle11g_64位连接32位PLSQL_Developer
- MyBatis报Parameter not found的Exception 处理
- Python xml解析记录
- win10怎么安装JDK8,怎么配置JDK8的环境变量
- next_permutation函数
- sizeof运算符解析
- ADB基本命令
- 中国式社交
- Linux内核分析 笔记二 操作系统是如何工作的 ——by王玥
- STL红黑树
- Android 第三天重置版
- 如何使用百度天气预报API接口
- contentProvider
- eclipse快捷键
- Eclipse使用入门教程
- 千里码【23】爬虫-1
- Cocos2d-x中的缓存
- java中带参无返回值方法的使用