文件操作内容
在C语言中,二进制文件是以数据在内存中的二进制存储形式(内码)原样保存的文件;而文本文件则是以字符的ASCII码值进行存储与编码的文件,文件的内容就是字符。文本文件和二进制文件都可以作为用户的数据文件,当写数据到磁盘时,文本文件需要把内存中的二进制形式转换成ASCII码的形式,要耗费转换时间,且占用的存储空间大,但优点是文本文件可读的并易于修改;而二进制文件所占的存储空间小,输出时无需转换,但一个字节并不对应一个字符,所以是不可读的,也很难修改。
- 系统调用函数:open()、read()、write()、lseek()、close()
- I/O库函数:fopen()、fread()、fwrite()、fseek()、fclose()
每个I/O库函数的根都在对应的系统调用函数中。
文本文件
- 字符读写:
int fgetc(FILE *fp):
//从fp中获取一个char,强制转换为intint ungetc(int c, FILE *fp);
//将fgetc()获得的先前字符推回到流中int fputc(int c, FILE *fp);
//将字符放入fp
- 行读写:
fgets(char *buf, int size, FILE *fp)
//从fp中读取最多为一行(以\n结尾)的字符int fputs(char *buf, FILE *fp)
//将buf中的一行写入fp中
- 任意位置读写
fseek(FILE *fp, long offset, int origin)
//在文件中定位到指定位置ftell(FILE *fp)
//获取当前文件位置指针的位置fread(void *buf, size_t size, size_t count, FILE *fp)
//从文件中读取指定长度的数据块fwrite(const void *buf, size_t size, size_t count, FILE *fp)
//将指定长度的数据块写入文件
在使用这些函数前打开文件(使用fopen),操作完成后关闭文件(使用fclose)。
二进制文件和文本文件转换
- 从文本文件转换为二进制文件:
创建input.txt文件,文件内容为学号。
使用fopen函数打开文本文件,并用fscanf等函数读取文本文件中的数据。
使用fopen函数创建一个二进制文件,并用fwrite函数将读取到的数据写入到二进制文件中。
使用fclose函数关闭文件。
使用cat命令查看intput.txt文件和output.bin文件内容。
fopen()中的参数可以指定为:“r”、“w”、“a”,分别代表读、写、追加。每个模式字符串可包含一个+号,表示同时读写,或者在写入、追加情况下,如果文件不存在则创建文件。
“r+”:表示读/写,不会截断文件。
“w+”:表示读/写,但是会先截断文件;如果文件不存在,会创建文件。
“a+”:表示通过追加进行读/写;如果文件不存在,会创建文件。 - 从二进制文件转换为文本文件:
使用转换的二进制文件output.bin,将其转换为文本文件output.txt,文件内容为学号。
使用fopen函数打开二进制文件,并用fread函数读取二进制文件中的数据。
使用fopen函数创建一个文本文件,并用fprintf等函数将读取到的数据写入到文本文件中。
使用fclose函数关闭文件。
数据结构读写
- 将数据结构写入文件:
使用fopen函数打开文件,并使用fwrite函数将数据结构写入文件。
使用fclose函数关闭文件。 - 从文件读取数据结构:
使用fopen函数打开文件,并使用fread函数从文件中读取数据结构。
使用fclose函数关闭文件。
苏格拉底挑战
I/O库函数知识点苏格拉底挑战
I/O库函数模式知识点苏格拉底挑战