IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> C语言文件操作 -> 正文阅读

[C++知识库]C语言文件操作

1.字符串读取文件

  1. 读字符串函数 fgets()
    函数原型
char *fgets(char *str,int n,FILE *fp);

//其意义是从fp所指的文件中读取10个字符送入字符数组str中,接着再将str字符串打印出,若文件读不到数据则返回NULL,此时会离开循环。
FILE *fp;
char str[10];
fp=fopen("E:\\code\\1.txt","rt");
while((fgets(str,10,fp)!=NULL){
	printf("os",str);
}

其功能是:在文件指针所指文件位置读取n个字符并放入str字符数组中。如果读不到字符串,则返回NULL。

  1. 写字符串函数 fputs()
    函数原型
int fputs(char *str,FILE *fp);

//其意义是把字符串str中的内容写入文件指针fp所指文件。
FILE *fp;
char str[10];
fp=fopen("E:\\code\\1.txt","rt");
gets(str);
fputs(str,fp);

其功能是:将字符串str写入文件指针fp所指文件的位置。写入数据成功时返回非0值,写入失败时返回EOF。其中,字符串str可以是字符串常量,也可以是字符数组名或指针变量

2.格式化字符串读写函数

  1. 格式化字符串读函数 fscanfO)
    函数原型
int fscanf(FILE *fp,”格式化字符串”,输入项地址表);
//E盘code文件夹下1.txt中存有以下数据,该数据有学号、姓名、性别三项数据,现从该文件中读取出该条数据指定的变量
FILE *fp;
char num[20],name[40],sex[5];
fp=fopen("E:\\code\\1.txt","t"); 
fscanf(fp,"%s %s %s",num,name,sex);

功能:从文件指针fp所指向的文件中按照格式字符串指定的格式,将文件中的数据送到输入项地址表中。若读取数据成功会返回所读取数据的个数,并将数据按照指定格式存入内存中的变量或数组中,文件指针自动向下移动;若读取失败则返回EOF。

  1. 格式化字符串写函数 fprintf()
    函数原型
int fprintf(FILE *FP,"格式化字符串",输出项地址表)//首先,初始化要追加的数据,然后以追加写方式打开指定文件。
char num[20]="20210101",name[40]="某某",sex[5]="男";
FILE *fp; 
fp=fopen("E:\\code\\1.txt","a+"); 
fputc('\n',fp); /*写入一个回车换行,保持原文件格式不变*/ 
fprintf(fp,"%s %s %s",num,name,sex);

功能:将输出项表中的变量值按照格式字符串指定的格式输出到文件指针fp所指向的文件位置

3.数据块读写操作

  1. 数据块读函数fread()
    函数原型
int fread(void *buffer,int size,int count,FILE* fp);
函数fread()内各个参数的含义如下:
(1) buffer是一个指针,它表示存放读入数据的首地址(即存放在何处)(2) size表示数据块的字节数。
(3) count表示要读写的数据块块数。

//其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实型数组fa中,连续读5次,即读5个实数到fa中
float fa[5];
fread(fa.4,5,fp);

功能:从文件指针fp所指向的文件的当前位置开始**,一次读入size个字节,重复count次**,并将读取到的数据存到buffer 开始的内存区中,同时将读写位置指针后移size*count次。该函数的返回值是实际读取的count值

  1. 数据块写函数fwrite()
    函数原型:
int fwrite(void *buffer,int size,int count, FILE* fp);
函数fwrite()内各个参数的含义如下:
(1) buffer是一个指针,它表示要输出的数据在内存中的首地址(即从何处开始存储)(2) size表示数据块的字节数。
(3) count表示要读写的数据块块数

//其意义是从fa实型数组中,每次读4个字节(一个实数)写入fp所指的文件中,连续读写5次,即将5个实数写到fp所指的文件中。
float fa[5];
fwrite(fa.45,fp);

功能:从buffer所指向的内存区开始,一次输出size个字节,重复count次,并将输出的数据存入到fp所指向的文件中,同时将读写位置指针后移size*count次。

4.文件的随机读取

  1. 函数rewind()
    函数原型
void rewind(FILE *fp);

其功能是:将文件内部的位置指针移到文件的开始位置。

  1. 函数 fseek( )
    函数原型
int fseek(FILE *fp, long offset,int whence);2个参数是偏移量(offset)。
该参数表示从起始点开始要移动的距离(参见表)的起始点模式)。
该参数必须是一个1ong类型的值,可以为正(前移)、负(后移)0(保持不动)3个参数是模式,该参数确定起始点。

其功能是:文件指针由whence地址移到offset的地址。

模式偏移量起始位置
SEEK_SET文件开始初
SEEK_CUR当前位置
SSEK_END文件末尾
下面是调用fseek()函数的一些示例,fp是一个文件指针:
fseek(fp, 0, SEEK SET); //定位至文件开始处
fseek(fp,10,SEEK_SET); //定位至文件中的第 10 个字节
fseek(fp, 2,SEEK CUR); //从文件当前位置前移2个字节
fseek(fp, 0,SEEK_END); //定位至文件结尾
fseek(fp,-10,SEEK_END);//从文件结尾处回退 10 个字节
  1. 函数ftell()
    函数 ftell)的作用是得到流式文件的当前位置,用相对于文件开头的位移量来表示。
    如果ftell函数返回值为-1L,表示出错。例如:
i=ftell(fp);
if(i==-1L){
	printf("Error!\n”);
}
变量i存放在当前位置,如调用函数出错(如不存在此文件),则输出“Error!”。

5.出错检查

  1. 函数feof()
    函数原型
int feof(FILE *fp);

功能:判断文件指针fp是否处于文件结束位置,若文件结束,则返回值为1,否则为0。

  1. 函数 ferror( )
    函数原型
int ferror(FILE *fp);

功能:检查文件在用各种输入/输出函数进行读写时是否出错。如果ferror返回值为0表示未出错,否则表示有错。
应该注意,对同一个文件每一次调用输入/输出函数,均产生一个新的ferror函数值,因此,应当在执行fopen函数时,ferror函数的初始值自动置0

  1. 函数clearerr()
    函数原型
int clearerr(FILE *fp);

功能:用于清除出错标志和文件结束标志,使它们为0值。假设在调用一个输入输出函数时出现错误,ferror函数值为一个非0值。在调用clearerr(fp)后,ferror(fp)的值变为0。
只要出现错误标志,就会一直保留,直到对同一文件调用clearerr函数或rewind函数,或任何其他一个输入/输出函数。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-02 16:34:44  更:2021-12-02 16:37:05 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:32:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码