
复习C语言的文件处理内容:
文件的打开与关闭
打开函数 fopen 的原型如下。
FILE * fopen(char *filename, char *mode);
函数参数:
1.filename:文件名,包括路径,如果不显式含有路径,则表示当前路径。例如,D:\f1.txt表示 D 盘根目录下的文件 f1.txt 文件。f2.doc表示当前目录下的文件f2.doc。
2.mode:文件打开模式,指出对该文件可进行的操作。常见的打开模式如 “r” 表示只读,“w” 表示只写,“rw” 表示读写,“a” 表示追加写入。
返回值:打开成功,返回该文件对应的 FILE 类型的指针;打开失败,返回 NULL。故需定义 FILE 类型的指针变量,保存该函数的返回值。可根据该函数的返回值判断文件打开是否成功。
关闭函数 fclose 的原型如下:
int fclose(FILE *fp);
函数参数:
fp:已打开的文件指针。
返回值:正常关闭,返回否则返回 EOF(-1)。
文件的顺序读写
换字符输入输出
c 语言中提供了从文件中逐个输入字符及向文件中逐个输出字符的顺序读写函数 fgetc 和 fputc 及调整文件读写位置到文件开始处的函数 rewind。这些函数均在标准输入输出头文件 stdio.h 中。
字符输入函数 fgetc 的函数原型为:
int fgetc(FILE *fp);
函数功能:从文件指针 fp 所指向的文件中输入一个字符。输入成功,返回该字符;已读取到文件末尾,或遇到其他错误,即输入失败,则返回文本文件结束标志 EOF
注意:由于 fgetc 是以 unsigned char 的形式从文件中输入(读取)一个字节,并在该字节前面补充若干 0 字节,使之扩展为该系统中的一个 int 型数并返回,而非直接返回 char 型。当输入失败时返回文本文件结束标志 EOF 即 -1,也是整数。故返回类型应为 int 型,而非 char 型。
字符输出函数 fputc 的函数原型为:
int fputc (intc,FILE *fp);
函数功能:向 fp 指针所指向的文件中输出字符 c,输出成功,返回该字符;输出失败,则返回 EOF(-1)。
文件读写位置复位函数 rewind 的函数原型为:
void rewind (FILE *fp);
函数功能:把 fp 所指向文件中的读写位置重新调整到文件开始处。
接字符串输入输出
字符串输入函数 fgets 的函数原型为:
char * fgets (char *s, int size, FILE * fp);
函数功能:从 fp 所指向的文件内,读取若干字符(一行字符串),并在其后自动添加字符串结束标志 '\0' 后,存入 s 所指的缓冲内存空间中(s 可为字符数组名),直到遇到回车换行符或已读取 size-1 个字符或已读到文件结尾为止。该函数读取的字符串最大长度为 size-1。
字符串输出函数 fputs 的函数原型为:
int fputs (const char *str, FILE *fp);
函数功能:把 str(str 可为字符数组名)所指向的字符串,输出到 fp 所指的文件中。
按格式化输入输出
文件操作中的格式化输入输出函数 fscanf 和 fprintf 一定意义上就是 scanf 和 printf 的文本版本。程序设计者可根据需要采用多种格式灵活处理各种类型的数据,如整型、字符型、浮点型、字符串、自定义类型等。
文件格式化输入函数 fscanf 的函数原型为:
int fscanf (文件指针,格式控制串,输入地址表列);
函数功能:从一个文件流中执行格式化输入,当遇到空格或者换行时结束。注意该函数遇到空格时也结束,这是其与 fgets 的区别,fgets 遇到空格不结束。
文件格式化输出函数 fprintf 的函数原型为:
int fprintf (文件指针,格式控制串,输出表列);
函数功能:把输出表列中的数据按照指定的格式输出到文件中。
按二进制方式读写数据块
按块读写数据的函数 fread 和 fwrite,这两个函数主要应用于对二进制文件的读写操作,不建议在文本文件中使用。书本介绍了 fread 读取二进制文件时,判断是否已经到达文件结尾的函数 feof。
数据块读取(输入)函数 fread 的函数原型为:
unsigned fread (void buf, unsigned size, unsigned count, FILE fp);
函数功能:从 fp 指向的文件中读取 count 个数据块,每个数据块的大小为 size。把读取到的数据块存放到 buf 指针指向的内存空间中。
函数参数:
buf:指向存放数据块的内存空间,该内存可以是数组空间,也可以是动态分配的内存。void类型指针,故可存放各种类型的数据,包括基本类型及自定义类型等。
size:每个数据块所占的字节数。
count:预读取的数据块最大个数。
fp:文件指针,指向所读取的文件。
在操作文件时,经常使用 feof 函数来判断是否到达文件结尾。
feof 函数的函数原型为:
int feof (FILE * fp);
函数功能:检查 fp 所关联文件流中的结束标志是否被置位,如果该文件的结束标志已被置位,返回非 0 值;否则,返回 0。
需要注意的是:
在文本文件和二进制文件中,均可使用该函数判断是否到达文件结尾。
文件流中的结束标志,是最近一次调用输入等相关函数(如 fgetc、fgets、fread 及 fseek 等)时设置的。只有最近一次操作输入的是非有效数据时,文件结束标志才被置位;否则,均不置位。
实验过程、测试代码及调试过程截屏
-
创建.txt文件包含学号姓名
![]()
-
创建头文件、hex.c、asc.c、myod.c文件
![]()
![]()
![]()
![]()
![]()
![]()
-
编译运行
![]()
-
od -tc -tx
![]()
5.静态库

6.动态库

7.makefile


遇到问题及解决方案
1.make命令丢失
解决方案重新安装build-essential

2.重新安装时显示无法获得前端锁的情况
解决方案查询上一个占用进程直接运用kill指令结束上一个进程,重新输入安装指令可正常运行









浙公网安备 33010602011771号