C语言 文件的输入输出

C语言程序在进行文件操作时遵循如下操作步骤:
打开->读写操作->关闭,通俗地说,打开是获取文件结构、系统为文件分配缓冲区的过程,不打开文件就不能对其进行读写,关闭是释放缓冲区和其他资源的过程,不关闭文件就会慢慢耗光系统资源。


在进行文件操作时,系统自动与3个标准设备文件联系,这3个文件无需打开和关闭,它们的文件指针分别是:
stdin:标准输入文件指针,系统分配为键盘。
stdout:标准输出文件指针,系统分配为显示器。
stderr:标准错误输出文件指针,系统分配为显示器。

stdout与stderr的区别:
stdout(标准输出),输出方式是行缓冲。输出的字符会先存放在缓冲区,等按下回车键时才进行实际的I/O操作。
stderr(标准错误),是不带缓冲的,这使得出错信息可以直接尽快地显示出来


1.显示器输出
输出相同的语句
C语言 文件的输入输出
puts和fputs,puchar和fputc,都同上面一样如图:
C语言 文件的输入输出
C语言 文件的输入输出


2.键盘输入

C语言操作设备,都是通过文件的方式,stdin对应键盘输入,stdout对应显示器输出

fscanf可以扫描任何文件,不仅仅是键盘,scanf是fscanf的特例如图:
C语言 文件的输入输出
结果如图:
C语言 文件的输入输出


3.gets,fgets,fputs
fgets通过文件的方式获取键盘输出,初始化str,可以从任何文件获取一个字符串,stdin代表键盘,gets是fgets的特例。
C语言 文件的输入输出
输出结果:
C语言 文件的输入输出


4.getchar,fgetc,fputc
fgetc 可以从任何文件获取一个字符,getchar只是fgetc特例
C语言 文件的输入输出
输入qaz 输出结果:q
C语言 文件的输入输出


5.stderr
遇到错误,就可以把错误信息写入stderr,会自动在显示器输出,stderr始终在显示器,stdout如果重定向会被写入磁盘。
C语言 文件的输入输出
输出结果:
C语言 文件的输入输出


6._getw,_putw
C语言 文件的输入输出
输出结果:
C语言 文件的输入输出

putw输出四个字符,如果输出一个字符,后续的会当做空字符处理如图:
C语言 文件的输入输出
输出结果:
C语言 文件的输入输出
putw输出错误返回值为-1


7.打开文件fopen

函数原型: FILE *fopen(char *name,char *mode)
功能:按指定方式打开文件
返回值:正常打开,为指向文件结构体的指针;打开失败,为NULL

C语言 文件的输入输出


只读模式“r”打开文件,该文件必须存在,否则打开失败
r+,rb,rb+,rt,rt+模式打开文件,文件不存在也会失败

W只写模式打开,文件存在则长度清0,不存在则建立文件。
W+,wb,wb+,wt,wt+模式打开文件,文件不存在则建立文件

access函数————确定文件或文件夹的访问权限。即,检查某个文件的存取方式,比如说是只读方式、只写方式等。如果指定的存取方式有效,则函数返回0,否则函数返回-1。


A以附加的方式打开只写文件,若文件不存在,则建立文件,存在则在文件尾部添加数据
A+以附加的方式打开可读写文件,不存在则建立文件,存在则写入数据到文件尾
At二进制数据的追加,不存在则创建,只能写。
At+读写打开一个文本文件,允许读或在文本末追加数据
Ab二进制数据的追加,不存在则创建,只能写。


8.关闭文件fclose()

(1).使用fclose()函数就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。
(2).如果流成功关闭,fclose 返回 0,否则返回EOF(-1)。

运行程序后输入数据正常关闭会写入到文件,如果程序意外关闭,没有调用fclose,文件数据丢失。