温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
瑞客论坛 www.ruike1.com
017-C
C+文件读文件的操作【瑞客论坛
www.ruike1.com】
017
C+
文件
操作
论坛
www
ruike1
com
017-C,C++文件读文件的操作
2021在线班
郁金香灬老师 QQ 150330575
交流群:158280115
学习目标:
C语言文件读写接口 //掌握
C++文件读写接口 //了解
C语言的文件操作相关函数
文件的打开操作 fopen 打开一个文件
文件的关闭操作 fclose 关闭一个文件
文件的读写操作 fgetc 从文件中读取一个字符
fputc 写一个字符到文件中去
fgets 从文件中读取一个字符串
fputs 写一个字符串到文件中去
fprintf 往文件中写格式化数据
fscanf 格式化读取文件中数据
fread 以二进制形式读取文件中的数据
fwrite 以二进制形式写数据到文件中去
getw 以二进制形式读取一个整数
putw 以二进制形式存贮一个整数
文件状态检查函数 feof 文件结束
ferror 文件读/写出错
clearerr 清除文件错误标志
ftell 获取文件指针的当前位置
文件定位函数 rewind 反绕
fseek 随机定位
fflush()用于清空文件缓冲区
1.打开文件:FILE * fopen(const char *filename, const char *mode)
2.关闭文件:int fclose (FILE* stream)
//格式化读数据
int fscanf (FILE *stream, const char *format[, address, ...]);
int fprintf (FILE *stream, const char *format[, address, ...]);
//读取字符串
char *fgets (char *s, int n, FILE *stream);
int fputs (const char*s, FILE *stream);
//读写二进制数据
fread和fwrite读写文件
函数原型如下:
unsigned fread (void *ptr, unsigned size, unsigned n, FILE *stream);
unsigned fwrite (const void *ptr, unsigned size, unsigned n, FILE *stream);
fseek改变文件当前位置
feof(检查文件流是否读到了文件尾)
相关函数 fopen,fgetc,fgets,fread
表头文件 #include<stdio.h>
定义函数 int feof(FILE * stream);
函数说明 feof()用来侦测是否读取到了文件尾,尾数stream为fopen()所返回之文件指针。如果已到文件尾则返回非零值,其他情况返回0。
返回值 返回非零值代表已到达文件尾。
fflush(更新缓冲区)
相关函数 write,fopen,fclose,setbuf
表头文件 #include<stdio.h>
定义函数 int fflush(FILE* stream);
函数说明 fflush()会强迫将缓冲区内的数据写回参数stream指定的文件中。如果参数stream为NULL,fflush()会将所有打开的文件数据更新。
返回值 成功返回0,失败返回EOF,错误代码存于errno中。
错误代码 EBADF 参数stream 指定的文件未被打开,或打开状态为只读。其它错误代码参考write()。
//获取文件大小
FILE *fp;
fp = fopen("c:\\123.txt" , "r");
fseek( fp , 0 , SEEK_END );
int file_size;
file_size = ftell( fp );
C++文件读写接口
1 #include <fstream>
2.ofstream //文件写操作 内存写入存储设备
3.ifstream //文件读操作,存储设备读区到内存中
4.fstream //读写操作,对打开的文件可进行读写操作
windows 文件读写API函数
HANDLE CreateFile(
LPCTSTR lpFileName, // file name对象路径名
DWORDdwDesiredAccess, // access mode控制模式
DWORDdwShareMode, // share mode共享模式
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // SD 安全属性(也即销毁方式)
DWORD dwCreationDisposition, // how to create
DWORDdwFlagsAndAttributes, // file attributes
HANDLEhTemplateFile // handle to template file
);
BOOL ReadFile(
HANDLEhFile, // handle to file
LPVOIDlpBuffer, // data buffer
DWORD nNumberOfBytesToRead, // number of bytes to read
LPDWORD lpNumberOfBytesRead, // number of bytes read
LPOVERLAPPED lpOverlapped // overlapped buffer
);
BOOL WriteFile(
HANDLEhFile, // handle to file
LPCVOIDlpBuffer, // data buffer
DWORD nNumberOfBytesToWrite, // number of bytes towrite
LPDWORD lpNumberOfBytesWritten, // number of bytes written
LPOVERLAPPED lpOverlapped //overlapped buffer
);
FlushFileBuffers(hFile);// 先把写文件缓冲区的数据强制写入磁盘。
SetFilePointer(hFile, lDistance, NULL, FILE_BEGIN);//设置文件位置
// C017_文件读取示例.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream> //C++
#include <stdio.h> //C 文件读写
#define 文件路径 "c:\\测试文件.txt"
//文件读取数据的例子
void 文件读取(const char*filepath)
{
//读取内容 然后printf显示
FILE *pfile;
fopen_s(&pfile, filepath, "r"); //r表示 只读内容 不写
char buf[256] = { 0 };
fread(buf, 1, 18, pfile);
printf("buf=%s\n", buf);
fclose(pfile);
}
size_t 获取文件大小(FILE * pfile)
{
int 当前位置 = ftell(pfile);
fseek(pfile, 0, SEEK_END);//移动文件尾部
size_t 文件大小= ftell(pfile);
fseek(pfile, 当前位置,0);//移动文件尾部
return 文件大小;
}
void 文件读取2(const char*filepath)
{
//读取内容 然后printf显示
FILE *pfile;
fopen_s(&pfile, filepath, "r"); //r表示 只读内容 不写
//计算出文件大小
size_t 文件大小 = 获取文件大小(pfile);
//动态分配的内存空间
char* buf =(char*)malloc(文件大小);
memset(buf, 0, 文件大小);
fread(buf, 1, 文件大小, pfile);
fclose(pfile);
printf("文件大小=%d 字节,buf=%s\n", 文件大小, buf);
free(buf);
}
int main()
{
文件读取2(文件路径);
getchar();
std::cout << "Hello World!\n";
}