文件
文件类型指针
文件指针是一个指向结构体类型的指针,定义格式为:FILE *指针变量名。在使用文件时,都需要先定义文件指针。
文本文件与二进制文件
文本形式存放的是字符的ASCII码,二进制形式存放的是数据的二进制。例如“100”如果是文本形式就是存储’1’、 ’0’、 ’0’三个字符的ASCII码(00110001 00110000 00110000),如果是二进制形式就把100转化成二进制(01100100)。
打开文件
文件的打开形式如下:FILE*fp;fp=fopen("c:\lab.c","rb");。fopen函数的前面一部分为文件名,后面一部分为文件的使用方式。其中r代表读,w代表写,a代表添加,b代表二进制位的。
文件函数
- 判断文件结束feof函数,调用形式为:feof(FILE*fp);//文件指针,如果文件结束,则函数返回1,否则返回0
- fseek用来设置文件的位置,接着的读或写操作将从此位置开始。函数的调用形式如下:fseek(文件指针,位移量,移动起始点);
例如:FILE*fp=fopen("C:\test.c","rb");fseek(fp,12,SEEK_SET);//表示将文件fp的位置移动岛文件起始位置后面的第12个字节的位置上或者fseek(fp,12,0);
fseek(fp,-12,SEEK_END);//表示将文件fp的位置移动到文件末尾位置前面的第12个字节的位置上或者fseek(fp,12,2);
如果是fseek(fp,12,SEEK_CUR); //表示将文件fp的位置从当前位置移动后面的第12个字节的位置上或者fseek(fp,12,1); - ftell用来获得文件当前的位置,函数给出当前位置相对于文件开头的字节数。函数调用形式如下:
ftell(FILE *fp) //给出当前闻之相对于开头的字节数 ,出错时,返回-1L - 文件位置移到开头rewind函数功能等价于 fseek(fp,0,SEEK_SET)
- 文件字符输入输出ch=fgetc(FILE *fp)函数用于从fp指定的文件中读入一个字符并把它作为函数值返回
- fputc(char ch,FILE *fp),将字符ch写到文件指针fp所指的文件中去,输出成功,则返回输出的字符,失败,则返回一个EOF值
- 文件输入输出fscanf函数和fprintf函数,一般形式fscanf(文件指针,格式控制字符串,输入项表或输入项表)
- 文件字符串输入输出fgets函数(fgets(str,n,fp),功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内)和fputs函数( fputs(str,fp) )
- 读写二进制文件fread函数和fwrite函数。
例题:
给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
给定源程序:
#include <stdio.h>//这是C语言的预处理指令,用于包含标准输入输出库。
void fun(char *s, int a, double f)//定义了一个名为fun的函数,它接受一个字符指针、一个整数和一个浮点数作为参数。
{
FILE *fp;
char ch;
//在函数内部定义了一个文件指针fp和一个字符变量ch。
fp = fopen("file1.txt", "w");//打开名为"file1.txt"的文件以写入数据。如果文件不存在,将创建一个新文件。
fprintf(fp, "%s %d %f\n", s, a, f);//将参数s、a和f的值写入文件。
fclose(fp);//关闭文件。
fp = fopen("file1.txt", "r");//以读取模式重新打开文件。
printf("\nThe result :\n\n");//在控制台打印提示信息。
ch = fgetc(fp);//从文件中读取一个字符并存储在ch中。
while (!feof(fp))//当未到达文件末尾时,执行循环体。
{
putchar(ch);//打印字符ch。
ch = fgetc(fp);//再次从文件中读取一个字符。
}
fclose(fp);//关闭文件。
}
int main()//定义主函数。
{
//在主函数中定义并初始化一个字符数组、一个整数和一个浮点数。
char a[10] = "Hello!";
int b = 12345;
double c = 98.76;
fun(a, b, c);//调用fun函数,将字符数组、整数和浮点数作为参数传入。
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具