本文主要是介绍理解C语言——从小菜到大神的晋级之路(11)——文件输入输出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本节视频地址:点击这里
在我们先前的程序中,所处理的数据或者在代码中预先指定,或者通过命令行窗口手动输入。事实上这两种方法都是效率不高的方法,相对更常用的是通过文件读写操作处理以文件形式保存的数据。C语言中的文件操作主要包括文件数据的读、写和定位等辅助操作。
1、文件
FILE *pFin = NULL, *pFout = NULL;
2、打开文件
FILE * fopen ( const char * filename, const char * mode );
该函数的第一个参数传入的是目标文件的路径,第二个参数用于表示文件的操作模式,可以代表读/写、文本/二进制、刷新/续写等不同的模式。各种模式的含义有:
“r” | 读文本 | “rb” | 读二进制 | “r+” | 更新读文本 | “rb+” | 更新读二进制 |
“w” | 写文本 | “wb” | 写二进制 | “w+” | 更新写文本 | “wb+” | 更新写二进制 |
“a” | 续写文本 | “ab” | 续写二进制 | “a+” | 更新续写文本 | “ab+” | 更新续二进制 |
使用fopen函数打开一个文件并进行操作完成后,需要将这个文件进行关闭。关闭文件使用fclose函数完成。fclose函数原型为:
int fclose ( FILE * stream );
int main()
{FILE *pF = NULL;fopen(“file.bin”, “rb");//文件处理fclose(pF);pF = NULL;
}
3、文本文件读写
(1)getc和putc函数
int getc ( FILE * stream );
int putc ( int character, FILE * stream );
getc函数只有一个参数就是读取目标文件的指针;putc函数第一个参数表示将要被写入目标文件的文本字符的ASCII码,第二个参数表示目标文件的指针。在putc中,字符使用int表示,但是在向文件写入的过程中,这个参数会被转化为unsigned char型进行写入。当读取文本文件到结束时,getc函数将会返回一个EOF字符,该字符的ASCII值为-1这一非法值,表示文件已结束。
(2)fgets和fputs函数
char * fgets ( char * str, int num, FILE * stream );
int fputs ( const char * str, FILE * stream );
(3)fscanf和fprintf函数
int fscanf ( FILE * stream, const char * format, ... );
int fprintf ( FILE * stream, const char * format, ... );
4、二进制文件读写
size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
5、文件定位函数
(1)fseek函数
int fseek ( FILE * stream, long int offset, int origin );
该函数的第一个参数表示打开文件的指针,第二个参数表示相对于origin的偏移量(在文本文件中,该值或为0或为ftell返回的一个值),第三个参数表示文件位置指针的参考位置。不同的origin的设置代表文件相对不同位置的偏移:
Origin取值 | SEEK_SET | SEEK_CUR | SEEK_END |
参考位置 | 文件头 | 当前位置 | 文件末尾 |
当文件指针pF指向一个二进制文件,则调用下面的语句使文件位置指针移动到距离文件头30字节的位置:
fseek(pF, 30L, SEEK_SET);
调用下面的语句使文件指针移动到距离文件末尾15个int型数据长度的位置:
fseek(pF, 15L * sizeof(int), SEEK_END);
如果文件指针指向一个文本文件,下面的语句使文件位置指针移动到文件的开头和结尾:
fseek(pF, 0L, SEEK_SET);
fseek(pF, 0L, SEEK_END);
(2)ftell函数
long int ftell ( FILE * stream );
该函数只有一个参数就是文件的指针。它的返回值代表了当前位置距离文件开始有多少个字节。
(3)rewind函数
void rewind ( FILE * stream );
该函数只有一个参数即文件指针,没有返回值。它的作用同下面fseek的用法类似:
fseek(pF, 0L, SEEK_SET);
这篇关于理解C语言——从小菜到大神的晋级之路(11)——文件输入输出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!