C++文件操作函数-读写文件
来源:互联网 发布:win7开机时间优化 编辑:程序博客网 时间:2024/06/03 14:47
文件读写是基础中的基础,关于此类知识的文章非常多,但还是想根据自己的使用心得去总结这么一些内容。
1.文件的打开和关闭
打开和关闭
fopen()函数
FILE *fopen(char *filename, *type);
filename:可以包含 路径 和 文件名 两部分。如:“TEST.dat”、“C:\tc\TEST.dat”
type:
“r”打开文件只读。
“w”创建文字文件只写。
“a”增补,如果文件不存在则创建一个。
“r+”打开一个文字文件读/写。
“w+”创建一个文字文件读/写。
“a+”打开或创建一个文件增补。
“b”二进制文件(可以和以上每一项合并用)。
“t”文本文件(默认项)。
返回值:成功打开文件则返回文件指针;否则返回空指针(NULL)
例: FILE *fp = fopen(strDEMFile.c_str(),_T("r"));//UNICODE以读方式打开文件
【strDEMFile 是const string类型】
另有:fopen_s()函数
FILE*fp;
fopen_s(&fp,strfileName.GetBuffer(),_T(“r”));//不能直接FILE *fp = fopen_s……
【strfileName是CString类型,应该也可以是string类型,但不能用const修饰!】
关闭
fclose()函数
int fclose(FILE *stream);//当文件关闭成功时,返回0,否则返回一个非0值;
GetBuffer(); 本函数常见于文件的打开等数据操作,由于在很多情况下需要路径是const string类型,但路径变量又是非常量。用法见上
文件的读写操作
文件的顺序写
fprintf()函数
int fprintf (FILE *stream, const char *format,)
FILE *stream:文件指针
const char *format:输出格式
< variable-list >(输出变量列表)
返回值: 是输出的字符数,发生错误时返回EOF(值为-1)。
例: fprintf (fp,"%d\n", i);//向文件写入一个整型 变量i
fputs()-fputc函数
int fputs ( const char * str, FILE * stream );//向文件写入一个字符串
str:可以是字符型指针 或者 字符串常量
FILE *stream:文件指针
返回值:是输出的字符数,发生错误时返回EOF(值为-1)。
例: fputs ("FuckWorld!\n", fp);
int fputc ( int c, FILE *stream );//向文件写入一个字符
c:可以是字符
FILE *stream:文件指针
返回值:是输出的字符数,发生错误时返回EOF(值为-1)。
例:
char strptr1[] = "This is a test of fputc!!\n";char *p;p = strptr1;while( (*p != '\0') && fputc(*(p++), fp) != EOF ) ;//这句话写的挺漂亮的
fscanf()函数
int fscanf ( FILE *stream, const char *format, );//顺序读取文件,遇空格和换行符结束
FILE *stream:文件指针
const char *format:输出格式
(输出变量列表)
返回值:成功,返回读入参数的个数;失败,返回EOF(值为-1)
例:
fscanf(fp, “%d”, &n);//加取地址符&
fscanf(fp, “%s”, s);//注意:读入字符串时不要取地址符!【s 为char型,如:char s[10];】
另有:fscanf_s()
例:fscanf_s(fp, “%lf %lf”, &dX, &dY);//获取X,Y坐标【lf-double】
fgets()函数
char *fgets ( char *buf, intbufsize, FILE *stream );//按顺序读bufsize个字符串,遇到换行符结束
*buf:字符型指针,指向用来存储所得数据的地址。
bufsize: 整型数据,指明存储数据的大小。
FILE *stream:文件指针
返回值:成功,则返回第一个参数buf;在读字符时遇到end-of-file,则eof指示器被设置,如果还没读入任何字符就遇到这种情况,则buf保持原来的内容,返回NULL;如果发生读入错误,error指示器被设置,返回NULL,buf的值可能被改变。
例:
if( fgets( line, 100, stream ) == NULL)
printf(“fgets error\n” );
else
printf( “%s”, line);//输出读取的字符串
fgetc()函数
int fgetc(FILE *stream);//按顺序读取文件,每次读取一个字符,读取后,光标位置后移一个字节。
FILE *stream:文件指针
返回值:成功,则返回所读取的一个字节;失败,(读到文件末尾或出错)则返回EOF
二进制文件的读写(随机读写)
常用读写方法:
int fseek(FILE * stream, long offset, int fromwhere); //设置文件指针stream的位置int fread(void *buf, int size, int count, FILE *stream); //二进制读int fwrite(void *buf, int size, int count, FILE *stream); //二进制写long ftell(FILE *stream); //获取文件位置指针当前位置相对于文件首的偏移字节数
Tips:
fputs和fwrite函数在输入’\n’的时候,会最自动在前面添加一个’\r’,这样会导致最后输出的文本多一行空行,想要不自动加,则在fopen的时候就指定“b”参数(二进制文件)
- CCS 3.3 操作C函数读写文件
- [C++]文件读写操作
- C文件读写操作
- C文件读写操作
- C文件读写操作
- C文件读写操作
- C 文件读写操作
- 【C】文件读写操作
- C文件读写函数
- C文件操作、读写文件 C++文件读写、文件操作
- 文件类型,c语言文件读写,文件缓冲,文件打开方式,文件操作函数
- C语言文件读写操作
- C语言文件读写操作
- c语言读写文件操作
- C\C++文件读写操作
- c语言文件读写操作
- C#XML文件读写操作
- C#XML文件读写操作
- 【网易云课堂】Java语言程序设计进阶----第一周编程作业
- 构造函数用于赋值
- 前台将数据存入集合并封装为JSON格式,后台用list遍历输入
- K近邻算法(kNN)学习——kd树
- leetcode 410. Split Array Largest Sum
- C++文件操作函数-读写文件
- android自动化测试工具【UiAutomator】——UiScrollable
- 使用外置安装的zookeeper后hbase出错;ERROR: The node /hbase is not in ZooKeeper
- 怎么样把网站内链优化与网站外链建设做好呢?
- Oracle 几种启动方式 & 查询启动状态
- Android 获取sd卡空间
- String、StringBuffer与StringBuilder之间区别
- WebRTC学习笔记_Demo收集
- C++单件模式下的继承