欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言超詳細(xì)文件操作基礎(chǔ)下篇

 更新時(shí)間:2022年03月15日 16:42:16   作者:K穩(wěn)重  
這篇文章主要為大家詳細(xì)介紹了C語言的文件操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

一、文件的順序讀寫

兄弟們,上一章只介紹到了如何把單個(gè)的字符或者字符串如何寫到文件里或者從文件中讀取,文件的順序讀寫后面還有幾個(gè)函數(shù)沒有介紹完,我們接著上一章繼續(xù),給大家介紹完,圖片再拷給大家回顧回顧

1圖片如下:

1.格式化的輸出函數(shù)(fprintf)

這樣我們就可以把格式化的數(shù)據(jù)寫到文件里了。

代碼如下:

#include<stdio.h>
struct S
{
	char arr[10];
	int num;
	float sc;
};
int main()
{
	struct S s = { "abcdef",20,5.5f };
	FILE* pf = fopen("test.dayta", "w");
	if (NULL == pf)
	{
		return 1;
	}
	//寫文件
	fprintf(pf, "%s %d %f", s.arr, s.num, s.sc);//這就是如何把格式化的數(shù)據(jù)寫到文件里
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
 
}

2.格式化的輸入函數(shù)(fscanf)

這樣我們就可以從文件里讀取格式化的數(shù)據(jù)了。

代碼如下:

#include<stdio.h>
struct S
{
	char arr[10];
	int num;
	float sc;
};
int main()
{
	struct S s = {0};
	FILE* pf = fopen("test.dayta", "r");
	if (NULL == pf)
	{
		return 1;
	}
	//寫文件
	fscanf(pf, "%s %d %f", s.arr, &(s.num), &(s.sc));//這就是如何把格式化的數(shù)據(jù)寫到文件里
	printf("%s %d %f", s.arr, s.num, s.sc);
	fprintf(stdout, "%s %d %f", s.arr, s.num, s.sc);//這類函數(shù)參數(shù)不同,功能就不同,可以適用于所有的流
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
 
}

3.二進(jìn)制讀寫

1.二進(jìn)制輸出函數(shù)(fwrite)

以二進(jìn)制的方式把數(shù)據(jù)寫到文件里

代碼如下:

struct S
{
    char arr[10];
    int num;
    float sc;
};
int main()
{
    struct S s = {"abcdef",20,5.5f};
    FILE* pf = fopen("test.dayta", "w");
    if (NULL == pf)
    {
        return 1;
    }
    //寫文件
    fwrite(&s, sizeof(struct S), 1, pf);
    //關(guān)閉文件
    fclose(pf);
    pf = NULL;
    return 0;
 
}

2.二進(jìn)制輸入函數(shù)

以二進(jìn)制的方式從文件里讀取數(shù)據(jù)

代碼如下:

#include<stdio.h>
struct S
{
	char arr[10];
	int num;
	float sc;
};
int main()
{
	struct S s = {0};
	FILE* pf = fopen("test.dayta", "r");
	if (NULL == pf)
	{
		return 1;
	}
	//寫文件
	fread(&s, sizeof(struct S), 1, pf);
	printf("%s %d %f", s.arr, &(s.num), &(s.sc));
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
 
}

3.scanf,fscanf,sscanf、printf,fprintf,sprintf的區(qū)別

scanf —? 針對(duì)標(biāo)準(zhǔn)輸入的格式化的輸入語句—stdin

fscanf — 針對(duì)所有輸入流的格式化的輸入語句 — stdin/文件

sscanf — 從一個(gè)字符串中讀取一個(gè)格式化的數(shù)據(jù)

printf — 針對(duì)標(biāo)準(zhǔn)輸出的格式化語句 — stdout?

fprintf — 針對(duì)所有輸出流的格式化輸出語句 — stdout/文件

sprintf — 把一個(gè)格式化的數(shù)據(jù),轉(zhuǎn)換成字符串

二、文件的隨機(jī)讀寫

1.fseek函數(shù)

fseek函數(shù):根據(jù)文件指針的位置和偏移量來定位文件指針。

代碼如下:

#include<stdio.h>
int main()
{
	
	FILE* pf = fopen("test.data", "r");
	if (NULL == pf)
	{
		perror("main");
		return 1;
	}
	//讀取文件
	int ch = fgetc(pf);
	printf("%c\n", ch);
	//調(diào)整文件
 
	fseek(pf, 2, SEEK_END);
	int ch = fgetc(pf);
	printf("%c\n", ch);
 
	//關(guān)閉文件
	fclose(pf);
	pf = NULL;
	return 0;
 
}

2.ftell函數(shù)

ftell函數(shù):返回文件指針相對(duì)于起始位置的偏移量(告知偏移量是多少)

3.rewind函數(shù)

rewind函數(shù):讓文件指針的位置回到文件的起始位置

三、被錯(cuò)誤使用的feof

feof(文件結(jié)束返回非0)

feof應(yīng)用于當(dāng)文件讀取結(jié)束的時(shí)候,判斷是讀取失敗結(jié)束,還是遇文件尾結(jié)束

fgetc函數(shù)在讀取結(jié)束的時(shí)候,會(huì)返回EOF,正常讀取的時(shí)候,返回的是讀取到的字符ASCII碼值

fgets函數(shù)在讀取結(jié)束的時(shí)候返回NULL,正常讀取的時(shí)候返回存放字符串的空間起始地址。

fread函數(shù)在讀取的時(shí)候,返回的是實(shí)際讀取到的完整元素的個(gè)數(shù)。如果發(fā)現(xiàn)讀取到的元素個(gè)數(shù)小于指定的元素個(gè)數(shù),這就是最后一次讀取了。

寫代碼test.txt文件拷貝一份,生成test2,txt

#include<stdio.h>
int main()
{
	FILE* pfread = fopen("test.txt", "r");
	if (NULL == pfread)
	{
		return 1;
	}
	FILE* pfwrite = fopen("test2.txt", "w");
	{
		if (pfread == NULL)
		{
			fclose(pfread);
			pfread = NULL;
				return 1;
		}
		//文件打開成功
		//讀寫文件
		int ch = 0;
		while((ch = fgetc(pfread))!= EOF)
		{
			//寫文件
			fputc(ch, pfwrite);
		}
	}
	//關(guān)閉文件
	fclose(pfwrite);
	pfwrite = NULL;
	return 0;
}

總結(jié)

綜合兩篇文章簡單的介紹了什么是文件,文件的使用和操作方法,學(xué)會(huì)文件的使用讓我們能更進(jìn)一步加深對(duì)編程的了解,相信大家都學(xué)會(huì)了。如果上述文章有任何問題?,歡迎大佬們提出質(zhì)疑,我會(huì)虛心學(xué)習(xí)和改正,最重要的是能共同進(jìn)步,共同成長,學(xué)習(xí)好編程。

到此這篇關(guān)于C語言超詳細(xì)文件操作基礎(chǔ)下篇的文章就介紹到這了,更多相關(guān)C語言 文件操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論