C语言与文件
程序与文件的交互: 程序从文件中读取信息或信息写入文件,这个过程又叫做文件重定向。
文件的定义: 在磁盘上的一段已经被命名的存储区。
C文件两种文件模式:文本模式和二进制模式。
I/O级别:底层I/O,高级I/O。高级I/O由C语言定义,一般为stdio.h头文件。
三个标准文件:标准输入,默认为键盘,文件指针名为stdin;标准输出,默认为显示屏,文件指针名为stdout;标准错误输出,文件指针名为stderr。
标准I/O
标准I/O在输入和输出时,都用到了缓冲区。缓冲区的存在大大提高了数据传输速率。
命令行参数
前面的学习中,提到过主函数的参数int atgc, char *argv[],其中argv[]是指向char的指针的数组。argv[]代指执行程序的命令中涉及到的文件,比如下面这样:
a.out words
a.out是编译后的可执行文件,也就是程序本身,是为argv[0];words是被处理文件,是为argv[1],以此类推,后面还可以有很多个文件(一般不超过20个)。
fopen()函数
fopen()函数是C程序在运行时打开文件的方法,简单的使用如下:
FILE *fp = fopen(argv[1],"r");
fp是文件指针。即指向文件的指针,它并非指向实际的文件,而是指向一个包含了文件信息内容的数据对象。
fopen()的返回值是一个文件指针,需要先声明一个文件指针来储存它的返回值。第一个参数是要打开的文件,用argv[]形式来表示,第二参数是一个字符串,来告诉程序打开文件的模式(上方是只读模式)。
getc()和putc()函数
前面学到了getchar()和putchar(),他们分别用于从缓冲区获取输入和输出,实际上,他们是简化版的getc()和putc()函数,getc()和putc()函数也是用于输入和输出,不过他们具有参数,参数是为文件指针,也就是向参数里指向的文件获取输入或输出,而getchar()和putchar()直接向标准I/O输入输出。
文件结尾
前面频繁提到的EOF,虽然在我的电脑上不好打出来,但它实际上是文件的结尾(类似于字符串的结尾'\0')。
fclose()函数
fopen()函数是C程序在运行时打开文件的方法,那么fclose()函数是C程序在运行时关闭文件的方法。不过返回值跟fopen()不一样,成功关闭文件时,fclose()返回整数0(类似于main()函数最后返回0)。