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

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

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

1.操作的準備

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

除此之外還得定義一個文件指針對目標文件進行指向操作,一般形式為:FILE *指針變量名;

例如:FILE *fp

2.文件的打開

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

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

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

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

例如:

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

一般為了保證文件正常打開,會進行以下測試:

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

3.文件的使用方式

使用文件的方式如下:

“r”(只讀):為輸入打開一個文本文件 對文件進行讀操作

“w”(只寫):為輸出打開一個文本文件 對文件進行寫操作

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

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

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

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

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

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

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

“rb+”(讀寫): 為讀寫打開一個二進制文件

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

“ab+”(讀寫): 為讀寫打開一個進制文件

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

4.1 fputc

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

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

運行結(jié)果:

4.2 fgetc

向文本文件中寫出一個單個字符

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

運行結(jié)果:

4.3 fputs

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

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

運行結(jié)果:

4.4 fgets

向文本文件中寫出一個字符串

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

運行結(jié)果:

4.5 fprintf

格式化輸出到一個流文件中

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

運行結(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;
}

運行結(jié)果:

4.7 fwrite

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

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;
	}
	//二進制的寫
	fwrite(&s, sizeof(struct s), 2, pf);
	fclose(pf);
	return 0;
}

運行結(jié)果:(因為是轉(zhuǎn)成二進制了,倒也正常)

4.8 fread

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

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

樣例:(二進制文件與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;
	}
	//二進制的讀
	fread(&s, sizeof(struct s), 2, pf);
	printf("%s %d %lf", s.name, s.age, s.score);
	fclose(pf);
	return 0;
}

運行結(jié)果:

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

相關(guān)文章

  • opencv3/C++基于顏色的目標跟蹤方式

    opencv3/C++基于顏色的目標跟蹤方式

    今天小編就為大家分享一篇opencv3/C++基于顏色的目標跟蹤方式,具有很好的參考價值,希望對的有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • C++實現(xiàn)寢室衛(wèi)生管理系統(tǒng)

    C++實現(xiàn)寢室衛(wèi)生管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)寢室衛(wèi)生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C語言 動態(tài)內(nèi)存開辟常見問題解決與分析流程

    C語言 動態(tài)內(nèi)存開辟常見問題解決與分析流程

    動態(tài)內(nèi)存是相對靜態(tài)內(nèi)存而言的。所謂動態(tài)和靜態(tài)就是指內(nèi)存的分配方式。動態(tài)內(nèi)存是指在堆上分配的內(nèi)存,而靜態(tài)內(nèi)存是指在棧上分配的內(nèi)存
    2022-03-03
  • Opencv圖像處理之圖像增加邊框

    Opencv圖像處理之圖像增加邊框

    這篇文章主要為大家詳細介紹了Opencv圖像處理之圖像增加邊框,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • C++ 實現(xiàn)高性能HTTP客戶端

    C++ 實現(xiàn)高性能HTTP客戶端

    HttpClient可以實現(xiàn)所有HTTP的方法,通過API傳輸接收HTTP消息。本文詳細講解了HttpClient,以及如何運用C++實現(xiàn)HTTP客戶端,感興趣的朋友可以參考一下
    2021-08-08
  • C++ Boost log日志庫超詳細講解

    C++ Boost log日志庫超詳細講解

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • C語言實現(xiàn)宿舍管理系統(tǒng)設(shè)計

    C語言實現(xiàn)宿舍管理系統(tǒng)設(shè)計

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)宿舍管理系統(tǒng)設(shè)計,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • QT使用QFile進行文件操作

    QT使用QFile進行文件操作

    本文主要介紹了QT使用QFile進行文件操作,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • C++運算符重載與多繼承及二義性詳解

    C++運算符重載與多繼承及二義性詳解

    繼友元知識過后,就到了今天的C++運算符重載的內(nèi)容了,運算符重載是C++里比較重要的內(nèi)容。這篇博文不會一下子講完各種運算符重載,因為太多了了也不好吸收掌握,所以運算符重載我準備分多次記錄和分享,那么接下來進入正文
    2022-11-11
  • C++ Boost shared_ptr共享指針詳細講解

    C++ Boost shared_ptr共享指針詳細講解

    shared_ptr是一個標準的共享所有權(quán)的智能指針,允許多個指針指向同一個對象,定義在memory文件中,命名空間為std,這篇文章主要介紹了C++ shared_ptr使用,需要的朋友可以參考下
    2022-11-11

最新評論