国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C++ > 正文

C++文件讀寫操作

2019-11-06 06:19:19
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

C++中的文件操作主要有兩種:將程序中的字符寫入到文件,以及將文件中的文本讀取到程序。

一、向文件中寫入文本(...->fp):

1.int fPRints(FILE *fp, const char *format,...):

fprintf()會(huì)根據(jù)參數(shù)format字符串來(lái)轉(zhuǎn)換并格式化數(shù)據(jù),然后將結(jié)果輸出到參數(shù)fp指定的文件中, 直到出現(xiàn)字符串結(jié)束('/0')為止,數(shù)字不會(huì)亂碼(%f...%d...)。

fprintf()的返回值是輸出的字符數(shù),發(fā)生錯(cuò)誤時(shí)返回一個(gè)負(fù)值,即返回EOF(符號(hào)常量,其值為-1)。

(關(guān)于fprintf()和fscanf()的一個(gè)小demo的下載地址(零分下載):點(diǎn)擊打開鏈接)

 

2.int fputc(char c, FILE *fp):

將字符ch寫到文件指針fp所指向的文件的當(dāng)前寫指針的位置,即ch->fp。

注意fputc()是一個(gè)字符一個(gè)字符的寫,因此如果是一個(gè)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):

向指定的文件寫入一個(gè)字符串(不自動(dòng)寫入字符串結(jié)束標(biāo)記符‘/0’),成功寫入一個(gè)字符串后,文件的位置指針會(huì)自動(dòng)后移,函數(shù)返回值為非負(fù)整數(shù);否則返回EOF(符號(hào)常量,其值為-1),即string->fp。注意fputs()是一個(gè)字符串直接寫入到文件中,因此使用時(shí)直接寫入字符串即可,如下:

#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,...):

根據(jù)數(shù)據(jù)格式format從輸入流(stream)中寫入數(shù)據(jù)(argument);與fgets的差別在于:fscanf遇到空格和換行時(shí)結(jié)束,注意空格時(shí)也結(jié)束,fgets遇到空格不結(jié)束。

(關(guān)于fprintf()和fscanf()的一個(gè)小demo的下載地址(零分下載):點(diǎn)擊打開鏈接)

 

2.int fgetc(FILE *fp):

意為從文件指針stream指向的文件中讀取一個(gè)字符,讀取一個(gè)字節(jié)后,光標(biāo)位置后移一個(gè)字節(jié),即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):

從文件中讀取數(shù)據(jù),每次讀取一行,讀取的數(shù)據(jù)保存在buf指向的字符數(shù)組中,每次最多讀取bufsize-1個(gè)字符(第bufsize個(gè)字符賦'/0'),如果文件中的該行,不足bufsize個(gè)字符,則讀完該行就結(jié)束,即fp->string。如若該行(包括最后一個(gè)換行符)的字符數(shù)超過(guò)bufsize-1,則fgets只返回一個(gè)不完整的行,但是,緩沖區(qū)總是以NULL字符結(jié)尾,對(duì)fgets的下一次調(diào)用會(huì)繼續(xù)讀該行。函數(shù)成功將返回buf,失敗或讀到文件結(jié)尾返回NULL。因此不能直接通過(guò)fgets的返回值來(lái)判斷函數(shù)是否是出錯(cuò)而終止的,應(yīng)該借助feof函數(shù)或者ferror函數(shù)來(lái)判斷。

返回參數(shù):成功,則返回第一個(gè)參數(shù)buf,如果發(fā)生讀入錯(cuò)誤,error指示器被設(shè)置,返回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);}


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 佳木斯市| 富民县| 民勤县| 巴里| 盐边县| 麻江县| 龙南县| 江阴市| 昌宁县| 四川省| 西安市| 建平县| 开鲁县| 永善县| 云梦县| 绍兴市| 克山县| 迁安市| 永州市| 饶平县| 漠河县| 营山县| 唐海县| 双峰县| 繁峙县| 汶川县| 柏乡县| 河池市| 四川省| 阳新县| 邛崃市| 九江市| 禹城市| 舒城县| 常熟市| 海南省| 花莲市| 呼玛县| 定远县| 衡阳县| 三原县|