【C語(yǔ)言】文件的基本讀寫操作等-創(chuàng)新互聯(lián)

文件
  1. 打開文件
FILE *fp;
fp = fopen("test.txt", "r");	//以讀的形式打開文本文件
if (fp == NULL)
{exit(0);
}
文本文件
	r 只讀	r+ 讀寫
	w 只寫	w+ 讀寫
			  a+ 讀寫尾部添加
二進(jìn)制文件
	rb 只讀		rb+ 讀寫
	wb 只寫		wb+ 讀寫
	ab 尾部添加	  ab+ 讀寫尾部添加
  1. 關(guān)閉文件
fclose(fp);
  1. 字符方式的讀寫文件
char ch;

//寫 - fputc()
ch = getchar();
while ( ch != '$' )
{fputc(ch,fp);	//把ch變量的字符值寫往文件
	ch = getchar();	
}

//讀	-fgetc()
ch = fgetc(fp);	//從文件里讀取一個(gè)字符
while ( ch != EOF )	//判斷文件是否讀完,未完,則繼續(xù)執(zhí)行讀操作
{putchar(ch);	//將字符送到屏幕
	ch = fgetc(fp);
}
putchar(10);	//換行
  1. 字符串讀寫文件
//讀 - fgets()
char ch[41], *cp;

cp = fgets(ch, 41, fp);	//從文件中讀取一行字符串,不得超過(guò)40字節(jié)(還有一個(gè)字節(jié)是'\0')
while ( cp != NULL )
{printf("%s", ch);
	cp = fgets(ch, 40, fp);
}

//寫 - fputs()
char ch[5][41], *cp;
int i;
for ( i = 0; i< 0; i++ )
{gets(ch[i]);	//將一個(gè)字符串放到數(shù)組中
}
for ( i = 0; i< 5; i++ )
{fputs(ch[i], fp);	//將一個(gè)字符串寫往文件
	fputs("\n", fp);	//在文本文件中換行
}
  1. 格式化方式讀寫文件
fscanf() 把從文本文件中讀出的字符串按指定的格式轉(zhuǎn)換為相應(yīng)類型變量的值(不只是字符型)
fprintf() 把變量的值按指定的方式轉(zhuǎn)化為文本寫往文本文件
	fscanf(文本指針,格式控制字符串,輸入項(xiàng)的地址列表);
		其返回值是事實(shí)上已賦值的變量的個(gè)數(shù),如果未進(jìn)行分配,則返回EOF
	fprintf(文本指針,格式控制字符串,輸入項(xiàng)的列表);
		其返回值是正確寫入文件的字節(jié)數(shù),否則返回負(fù)數(shù)
int main(void)
{char name[9];
	FILE *fp;
	int age, i, num=0;
	float score;
	
	fp = fopen("student.txt", "w");	//以寫的形式打開文件
	if ( fp == NULL )
		exit(0);
	
	for ( i = 0; i< 3; i++ )
	{printf("請(qǐng)輸入學(xué)生_%d的姓名,年齡,成績(jī):", i+1);
		scanf("%s%d%f", name, &age, &score);
		fprintf(fp, "%s %4d %6.2f\n", name, age, score);	//將變量數(shù)據(jù)寫往文件
	}
	fclose(fp);
	
	fp = fopen("student.txt", "r");	//以讀的形式打開文件
	printf("從文件中讀出的學(xué)生數(shù)據(jù):\n");
	i = fscanf(fp, "%s%d%f", name, &age, &score);	//利用scanf的返回值來(lái)判斷讀是否成功
	while ( i == 3 )
	{printf("學(xué)生_%d的姓名,年齡,成績(jī):", ++num);
		printf("%s %4d %6.2f\n", name, age, score);	//將數(shù)據(jù)打印到屏幕上
		i = fscanf(fp, "%s%d%f", name, &age, &score);
	}
	fclose(fp);

	return 0;
}
  1. 數(shù)據(jù)塊讀寫文件
數(shù)據(jù)塊讀寫文件在讀寫過(guò)程中不對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)換,直接在內(nèi)存與文件之間進(jìn)行數(shù)據(jù)拷貝;
	讀寫過(guò)程中不需考慮數(shù)據(jù)的性質(zhì)和類型,只是簡(jiǎn)單對(duì)存儲(chǔ)空間進(jìn)行復(fù)制
	fread(buffer,size,count,fp);
	fwrite(buffer,size,count,fp);
	buffer:對(duì)應(yīng)一個(gè)連續(xù)內(nèi)存數(shù)據(jù)區(qū)的起始地址,通常是一個(gè)指針值
	size:欲復(fù)制的一個(gè)數(shù)據(jù)塊的大小(字節(jié)數(shù))
	count:本次欲復(fù)制多少個(gè)數(shù)據(jù)塊
	fp:指向讀寫文件的文件指針
	
	int feof(FILE *fp)
	用于在進(jìn)行讀文件時(shí),檢測(cè)是否讀寫文件所有數(shù)據(jù),如果文件結(jié)束,則返回非0值,反之返回0
	while (!feof(fp)) {}
int main(void)
{FILE *fp1, *fp2;
	char data;
	
	fp1 = fopen("stu.txt", "rb");
	fp2 = fopen("stu_copy.txt", "wb");
	if ( fp1 == NULL || fp2 == NULL )
		exit(0);
	
	fread(&data, sizeof(char), 1, fp1);	//讀一個(gè)字節(jié)的內(nèi)容給變量data
	while ( !feof(fp1) )
	{fwrite(&data, sizeof(char), 1, fp2); 	//將data的內(nèi)容寫到fp2
		fread(&data, sizeof(char), 1, fp1);
	}
	fclose(fp1);
	fclose(fp2);

	return 0;
}
  1. 文件的其他操作
fseek(),可以將文件位置指針移動(dòng)到指定的位置
	int fseek(FILE *fp,long 位移量, int 起始點(diǎn));
	起始點(diǎn)參數(shù):0 文件開始位置; 1 文件當(dāng)前位置; 2 文件末尾位置
	位移量: 值為正時(shí),指針向后移動(dòng);值為負(fù)時(shí),指針向前移動(dòng);若是long型,則100L
	
	rewind(FILE *fp) 是使文件的文件位置指針重新指向文件開始的位置
	
	fflush(stdin);	清空輸入緩存區(qū),保證下面的scanf()讀新的循環(huán)條件
	
	ftell(FILE *fp) 用于獲取文件位置指針當(dāng)前值
	
	ferror(FILE *fp) 用于測(cè)試給定文件指針指向的文件信息區(qū)的錯(cuò)誤標(biāo)識(shí)符
	
	cleareer(FILE *fp) 使文件錯(cuò)誤標(biāo)志和文件結(jié)束標(biāo)志置為0

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

創(chuàng)新互聯(lián)長(zhǎng)期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為通遼企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),通遼網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

標(biāo)題名稱:【C語(yǔ)言】文件的基本讀寫操作等-創(chuàng)新互聯(lián)
文章分享:http://bm7419.com/article42/cechec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站維護(hù)、網(wǎng)站設(shè)計(jì)、動(dòng)態(tài)網(wǎng)站自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)