首页 > 编程 > C++ > 正文

C++文件读写操作

2019-11-06 06:19:19
字体:
来源:转载
供稿:网友

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);}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选