---摘要:C语言学习个人向记录-输入输出验证---
# 2021/3/5 输入输出--通用I/O函数单字符I/O
缓冲区
缓冲输入–缓冲区–使用
无缓冲输入–直接使用
UNIX和IBM等使用无缓冲的方法不一样,还是常用缓冲
结束键盘输入
文件、流和键盘输入
file在各个系统不一致
low-level I/O不好用,没必要搞标准库
standard I/O package 最终用这个统一的
不一致性:
有些系统吧文件信息放一边,文件放另一边
有些系统用换行符换行,有些用回车+换行
stream 流,数据流,没看懂
目前的理解,屏幕输出是程序运行的“副产物”,键盘输入是文件写入
既然键盘输入是文件写入,那么一定能结束文件
文件结尾
getchar()这个函数,是识别输入-1为结尾的
char类型没有-1,无所谓
但是getchar实际上会出int类型的值
EOF是内定文件结尾
1 | int ch; |
重定向和文件
不止可以用键盘输入,什么磁带,穿孔卡片,语音都可以
更多的,从其它文件
打开,读取,写入,关闭文件
也可以重新定向
成功了,程序+空格+<+空格+文件名就行
OMG,我居然用程序创造了一个文件
似乎在使用电脑的历史中我总是用别人的程序创造文件
所以自己写的程序创造了一个文件感觉很特别
利用组合重定向复制一个文件
定向输入和输出的顺序无关紧要
1 | #include<stdio.h> |
好家伙,用代码替代刚才那些操作就要用到新的函数了
- fopen()
新的类型 FILE * fp
fp=fopen(filename,”r”);
文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:
r(read): 只读
w(write): 只写
a(append): 追加
t(text): 文本文件,可省略不写
b(binary): 二进制文件
+: 读和写
代码,逐字复制一个文本文档
1 | #include<stdio.h> |
更友好的输入
有一个很诡异的事儿
就是输入的东西会进一个缓冲队列
读一个字符,后面的字符还在队列里
比如说,你用键盘输入一个1+Enter
实际上’1’+’\n’都被存入,你就相当于输入两个字符
1 | //基本上你需要在循环里加上这个,跳过其他输入 |
注意getchar()和scanf()的区别
scanf用来读数值,会跳过换行符,空格和制表符
- 跳过输入中不需要的部分
1 | char get_first(void) |
关于输入界面的内容,可以总结到这个程序当中
1 | /* menuette.c ---菜单程序 */ |