C++文件读写操作
来源:互联网 发布:淘宝好看平价女装店铺 编辑:程序博客网 时间:2024/06/06 23:56
C++中的文件操作主要有两种:将程序中的字符写入到文件,以及将文件中的文本读取到程序。
一、向文件中写入文本(...->fp):
1.int fprints(FILE *fp, const char *format,...):
fprintf()会根据参数format字符串来转换并格式化数据,然后将结果输出到参数fp指定的文件中, 直到出现字符串结束('\0')为止,数字不会乱码(%f...%d...)。
fprintf()的返回值是输出的字符数,发生错误时返回一个负值,即返回EOF(符号常量,其值为-1)。
(关于fprintf()和fscanf()的一个小demo的下载地址(零分下载):点击打开链接)
2.int fputc(char c, FILE *fp):
将字符ch写到文件指针fp所指向的文件的当前写指针的位置,即ch->fp。
注意fputc()是一个字符一个字符的写,因此如果是一个char*,可以这样写入到文件中:
#include <stdio.h>#include <stdlib.h>#include <string.h>void main(){FILE *fp;char *s = "test";if ((fp = fopen("file.txt", "w")) == NULL){printf("Error!\n");exit(1);}for(int i = 0; i < strlen(s); i++)fputc(s[i], fp);fclose(fp);}
3.int fputs(char *str, FILE *fp):
向指定的文件写入一个字符串(不自动写入字符串结束标记符‘\0’),成功写入一个字符串后,文件的位置指针会自动后移,函数返回值为非负整数;否则返回EOF(符号常量,其值为-1),即string->fp。注意fputs()是一个字符串直接写入到文件中,因此使用时直接写入字符串即可,如下:
#include <stdio.h>#include <stdlib.h>#include <string.h>void main(){FILE *fp;char *s = "test";if ((fp = fopen("file.txt", "w")) == NULL){printf("Error!\n");exit(1);}fputs(s, fp);fclose(fp);}
二、从文件中读取文本(fp->...):
1.int fscanf(FILE *fp, const char *format,...):
根据数据格式format从输入流(stream)中写入数据(argument);与fgets的差别在于:fscanf遇到空格和换行时结束,注意空格时也结束,fgets遇到空格不结束。
(关于fprintf()和fscanf()的一个小demo的下载地址(零分下载):点击打开链接)
2.int fgetc(FILE *fp):
意为从文件指针stream指向的文件中读取一个字符,读取一个字节后,光标位置后移一个字节,即fp->ch。
#include <stdio.h>#include <stdlib.h>#include <string.h> #include <iostream>void main(void){FILE *fp;char ch;if ((fp = fopen("file.txt", "w+")) == NULL){printf("Error!\n");exit(1);}while (ch != EOF){ch = fgetc(fp);std::cout << ch << std::endl;} while (ch != EOF);fclose(fp);}
3. char *fgets(char *buf, int bufsize, FILE*fp):
从文件中读取数据,每次读取一行,读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束,即fp->string。如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。函数成功将返回buf,失败或读到文件结尾返回NULL。因此不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。
返回参数:成功,则返回第一个参数buf,如果发生读入错误,error指示器被设置,返回NULL,buf的值可能被改变。
#include <stdio.h>#include <stdlib.h>#include <string.h> #include <iostream>void main(void){FILE *fp;char str[] = "test";char buf[20];if ((fp = fopen("file.txt", "w+")) == NULL){printf("Error!\n");exit(1);}fgets(buf, strlen(str) + 1, fp);fclose(fp);}
- [C++]文件读写操作
- C文件读写操作
- C文件读写操作
- C文件读写操作
- C文件读写操作
- C 文件读写操作
- 【C】文件读写操作
- C文件操作、读写文件 C++文件读写、文件操作
- C语言文件读写操作
- C语言文件读写操作
- c语言读写文件操作
- C\C++文件读写操作
- c语言文件读写操作
- C#XML文件读写操作
- C#XML文件读写操作
- c语言文件读写操作
- C语言文件读写操作
- C语言文件读写操作
- JS 正则表达式
- 将博客搬至CSDN
- iOS 编程中 throttle 的那些事
- Maven安装配置
- protobuf.js如何读取二进制数据
- C++文件读写操作
- [LeetCode] 8. String to Integer (atoi) java
- h5 利用socketchannel发送请求
- CoreLocation
- Navicat 解决方案之ORA-28547
- 第34篇 再谈http协议
- java——基本数据类型
- AngularJs学习笔记
- 集体编程智慧--第五章:优化算法