1,程序设计中文件分为程序文件和数据文件
数据文件根据数据的组织形式被称为文本文件或二进制文件
二进制文件:数据在内存中以二进制形式存在,不加转换的输出到外存
文本文件:以ASCII字符存出的文件(原因:有时要求外存以ASCII码的形式存储,则需要在 存储前进行转换)
test.c
#include<stdio.h>
int main()
{
int a = 10000;
FILE* pf = fopen("test.txt","wb");
fwrite(&a, 4, 1, pf);
取a地址 4个字节 复制1份 复制到pf(既test.txt文件所在地址)
fclose(pf);
pf = NULL;
return 0;
}
test.txt
00000000 10 27 00 00
fopen:打开文件 参数1:目标文件(如果没有,自动创建该文件)
参数2:打开形式(w:写 b:二进制)
fwrite:写文件 参数1:只想要写入内容的指针
参数2:写入内容的大小(单位 字节)
参数3:要写入的最大条目数(就是写几遍)
参数4:要写入文件的指针
fclose:释放文件 (P75)
文件使用方式 含义 如果指定文件不存在
文件的顺序读写
文件的随机读写
根据文件指针的起始位置和偏移量来定位文件指针 in fseek( FILE *stream, long offset, int origin );
返回文件指针的偏移量 long ftell ( FILE *stream );
让文件指针回到起始位置 void rewind( FILE *stream );
puts自带换行
文件缓冲区:
0:scanf/printf: 是针对标准输入/输出流的格式化输入/输出语句
fscanf/fprintf:是针对所有输入/输出流的格式化输入/输出语句
sscanf:从字符串中读取格式化的数据
sprintf:将格式化的数据转化为(存储到)字符串
1, 打印错误消息 void perror( const char *string );
测试流上的错误 int ferror( FILE *stream ); 文件出错返回非0值/未出错返回0
判断文件结束原因 int feof( FILE *stream ); 读完文件结束返回非0值 否则返回0
#include<stdio.h>
int main()
{
char c;
FILE* pf = fopen("test.txt", "r");
if (pf == NULL)
{
perror("file open faild");
return EXIT_FAILURE;//返回 -1
}
while ((c = fgetc(pf) )!= EOF)
{
putchar(c);
}
printf("\n");
if (ferror(pf))
puts("error when readding");
else if (feof(pf))
puts("end of file readed successfully");
fclose(pf);
pf = NULL;
return 0;
}