最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C語(yǔ)言文件操作與相關(guān)函數(shù)介紹

 更新時(shí)間:2022年09月09日 16:42:01   作者:AKA.瞳源治  
文件(file)一般指存儲(chǔ)在外部介質(zhì)上數(shù)據(jù)的集合,比如我們經(jīng)常使用的.txt, .bmp, jpg. .exe,.rmvb等等,下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言文件操作的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

1.操作的準(zhǔn)備

c語(yǔ)言中的文件操作相關(guān)函數(shù)的頭文件都是在#include<stdio.h>里

除此之外還得定義一個(gè)文件指針對(duì)目標(biāo)文件進(jìn)行指向操作,一般形式為:FILE *指針變量名;

例如:FILE *fp

2.文件的打開

對(duì)于數(shù)據(jù)的處理一般有兩種存放形式:文本文件和二進(jìn)制文件

想要操作文件,那肯定先得把它打開,而在C語(yǔ)言中一般使用fopen函數(shù)打開文件

一般形式為:fopen(文件名,文件操作形式);

該函數(shù)成功實(shí)現(xiàn)將返回一個(gè)文件指針,失敗則返回NULL

例如:

FILE* pf = fopen("test.txt", "w");

一般為了保證文件正常打開,會(huì)進(jìn)行以下測(cè)試:

if (pf == NULL)
{
	perror("fopen");
	return 1;
}

3.文件的使用方式

使用文件的方式如下:

“r”(只讀):為輸入打開一個(gè)文本文件 對(duì)文件進(jìn)行讀操作

“w”(只寫):為輸出打開一個(gè)文本文件 對(duì)文件進(jìn)行寫操作

“a”(追加): 向文本文件尾添加數(shù)據(jù)

“rb”(只讀): 為輸入打開有一個(gè)二進(jìn)制文件

“wb”(只寫):為輸出打開一個(gè)二進(jìn)制文件對(duì)文件進(jìn)行寫操作

“ab”(追加): 向二進(jìn)制文件尾添加數(shù)據(jù)

“r+”(讀寫): 為讀寫打開一個(gè)文本文件

“w+”(讀寫):為讀寫建立一個(gè)新的文本文件

“a+”(讀寫): 向文本文件尾添加數(shù)據(jù)

“rb+”(讀寫): 為讀寫打開一個(gè)二進(jìn)制文件

“wb+”(讀寫):為讀寫建立一個(gè)新的二進(jìn)制文件

“ab+”(讀寫): 為讀寫打開一個(gè)進(jìn)制文件

4.相關(guān)的函數(shù)

4.1 fputc

從輸入流緩沖區(qū)中取出下一個(gè)字符并將字符放入文本文件中

int fputc ( int character, FILE * stream );

樣例:

#include<stdio.h>
int main()
{
	FILE* pf = fopen("test.txt.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	//寫文件
	char ch = 'a';
	for (ch = 'a'; ch <= 'z'; ch++)
	{
		fputc(ch, pf);
	}
	fclose(pf);
	pf = NULL;
	return 0;
}

運(yùn)行結(jié)果:

4.2 fgetc

向文本文件中寫出一個(gè)單個(gè)字符

int fgetc ( FILE * stream );

樣例:(文本文件與fputc調(diào)用相同)

#include<stdio.h>
int main()
{
	FILE* pf = fopen("test.txt.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	//讀文件
	int ch = 0;
	while ((ch = fgetc(pf)) != EOF)
	{
		printf("%c ", ch);
	}
	fclose(pf);
	pf = NULL;
	return 0;
}

運(yùn)行結(jié)果:

4.3 fputs

從輸入流緩沖區(qū)中取出下一個(gè)字符串并將字符放入文本文件中

int fputs ( const char * str, FILE * stream );

樣例:

int main()
{
	char arr[256] = { 0 };
	FILE* pf = fopen("test.txt.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
  //寫文件
	fputs("ssssssssssssssssss\n", pf);
	fputs("llllllllllllllllll\n", pf);
	fclose(pf);
	pf = NULL;
	return 0;
}

運(yùn)行結(jié)果:

4.4 fgets

向文本文件中寫出一個(gè)字符串

char * fgets ( char * str, int num, FILE * stream );

樣例:(文本文件與fputs調(diào)用相同)

int main()
{
	char arr[256] = { 0 };
	FILE* pf = fopen("test.txt.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	fgets(arr, 255, pf);
	printf("%s", arr);
	fgets(arr, 255, pf);
	printf("%s", arr);
	fclose(pf);
	pf = NULL;
	return 0;
}

運(yùn)行結(jié)果:

4.5 fprintf

格式化輸出到一個(gè)流文件中

int fprintf ( FILE * stream, const char * format, ... );

樣例:

struct s
{
	char name[20];
	int age;
	double score;
};
#include<stdio.h>
int main()
{
	struct s s = { "霧都",20,98.5 };
	FILE* pf = fopen("test.txt.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	//寫文件
	fprintf(pf, "%s %d %lf", s.name, s.age, s.score);
	fclose(pf);
	pf = NULL;
	return 0;
}

運(yùn)行結(jié)果:

4.6 fscanf

用于讀取數(shù)據(jù)

int fscanf ( FILE * stream, const char * format, ... );

樣例:(文本文件與fprintf調(diào)用相同)

struct s
{
	char name[20];
	int age;
	double score;
};
#include<stdio.h>
int main()
{
	struct s s = { 0 };
	FILE* pf = fopen("test.txt.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	fscanf(pf, "%s %d %lf", s.name, &(s.age), &(s.score));
	printf("%s %d %lf", s.name, s.age, s.score);
	/*fprintf(stdout, "%s %d %lf", s.name, s.age, s.score);*/
	fclose(pf);
	pf = NULL;
	return 0;
}

運(yùn)行結(jié)果:

4.7 fwrite

將 count 個(gè)大小為 length 的對(duì)象從名為 buffer 的數(shù)組二進(jìn)制寫入輸入流文件名。

size_t fwrite(void *buffer, size_t length, size_t count, FILE *filename);

樣例:

#include<stdio.h>
struct s
{
	char name[20];
	int age;
	double score;
};
int main()
{
	struct s s = { "霧都",20,98.5 };
	FILE* pf = fopen("test.txt.txt", "w");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	//二進(jìn)制的寫
	fwrite(&s, sizeof(struct s), 2, pf);
	fclose(pf);
	return 0;
}

運(yùn)行結(jié)果:(因?yàn)槭寝D(zhuǎn)成二進(jìn)制了,倒也正常)

4.8 fread

二進(jìn)制讀取count大小對(duì)象的數(shù)量length從輸入流filename到名為的數(shù)組buffer

size_t fread(void *buffer, size_t length, size_t count, FILE *filename);

樣例:(二進(jìn)制文件與fwrite調(diào)用相同)

struct s
{
	char name[20];
	int age;
	double score;
};
int main()
{
	struct s s = { "霧都",20,98.5 };
	FILE* pf = fopen("test.txt.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	//二進(jìn)制的讀
	fread(&s, sizeof(struct s), 2, pf);
	printf("%s %d %lf", s.name, s.age, s.score);
	fclose(pf);
	return 0;
}

運(yùn)行結(jié)果:

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

相關(guān)文章

  • C++中聲明類的class與聲明結(jié)構(gòu)體的struct關(guān)鍵字詳解

    C++中聲明類的class與聲明結(jié)構(gòu)體的struct關(guān)鍵字詳解

    這篇文章主要介紹了C++中聲明類的class與聲明結(jié)構(gòu)體的struct關(guān)鍵字,默認(rèn)情況下結(jié)構(gòu)的所有成員均是公有的,而類的所有成員是私有的,需要的朋友可以參考下
    2016-01-01
  • opencv利用霍夫變換檢測(cè)直線進(jìn)行圖片校正

    opencv利用霍夫變換檢測(cè)直線進(jìn)行圖片校正

    這篇文章主要為大家詳細(xì)介紹了opencv利用霍夫變換檢測(cè)直線對(duì)圖片進(jìn)行校正,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12
  • 嵌入式C語(yǔ)言查表法在項(xiàng)目中的應(yīng)用

    嵌入式C語(yǔ)言查表法在項(xiàng)目中的應(yīng)用

    今天小編就為大家分享一篇關(guān)于嵌入式C語(yǔ)言查表法在項(xiàng)目中的應(yīng)用,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • OpenCV圖像旋轉(zhuǎn)Rotate的詳細(xì)介紹

    OpenCV圖像旋轉(zhuǎn)Rotate的詳細(xì)介紹

    這篇文章主要介紹了OpenCV圖像旋轉(zhuǎn)Rotate,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • Qt多版本共存使用實(shí)現(xiàn)組件增刪

    Qt多版本共存使用實(shí)現(xiàn)組件增刪

    本文主要介紹了Qt多版本共存使用實(shí)現(xiàn)組件增刪,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C語(yǔ)言實(shí)現(xiàn)通訊錄功能的流程與代碼

    C語(yǔ)言實(shí)現(xiàn)通訊錄功能的流程與代碼

    通訊錄是一個(gè)可以記錄親人、好友信息的工具,這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)通訊錄管理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++如何實(shí)現(xiàn)BCD碼和ASCII碼的相互轉(zhuǎn)換

    C++如何實(shí)現(xiàn)BCD碼和ASCII碼的相互轉(zhuǎn)換

    這篇文章主要介紹了C++實(shí)現(xiàn)BCD碼和ASCII碼互轉(zhuǎn),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 2~62位任意進(jìn)制轉(zhuǎn)換方法(c++)

    2~62位任意進(jìn)制轉(zhuǎn)換方法(c++)

    下面小編就為大家?guī)?lái)一篇2~62位任意進(jìn)制轉(zhuǎn)換方法(c++)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-06-06
  • C++ 中的Lambda表達(dá)式寫法

    C++ 中的Lambda表達(dá)式寫法

    在 C++ 11 中,lambda 表達(dá)式(通常稱為 “l(fā)ambda”)是一種在被調(diào)用的位置或作為參數(shù)傳遞給函數(shù)的位置定義匿名函數(shù)對(duì)象的簡(jiǎn)便方法,下面通過本文給大家介紹C++ 中的Lambda表達(dá)式寫法,需要的朋友參考下吧
    2017-02-02
  • 關(guān)于C++面向?qū)ο笤O(shè)計(jì)的訪問性問題詳解

    關(guān)于C++面向?qū)ο笤O(shè)計(jì)的訪問性問題詳解

    這篇文章主要給大家介紹了關(guān)于C++面向?qū)ο笤O(shè)計(jì)的訪問性問題的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09

最新評(píng)論

诸城市| 和田市| 河东区| 房产| 株洲县| 水富县| 高安市| 高安市| 宣武区| 旬阳县| 大方县| 定陶县| 本溪市| 昌宁县| 沂水县| 西城区| 吉安市| 富民县| 沂南县| 云浮市| 麟游县| 茶陵县| 凭祥市| 兴隆县| 绥宁县| 斗六市| 石首市| 伊宁县| 隆德县| 辽宁省| 延寿县| 湘潭市| 麦盖提县| 睢宁县| 北流市| 元谋县| 新沂市| 泸溪县| 伊宁市| 扶风县| 额尔古纳市|