国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C語言關于文件的操作方法總結

C語言關于文件的操作方法總結

2022-02-28 14:57Ersansui C/C++

在任何程序的開發中,對于文件的操作都是繞不開的一個知識點,因為總是要用到存儲讀取的功能,今天我們來詳細了解C語言中是怎么操作文件的

什么是文件

程序文件

其實從文件的功能的角度來說:我們的文件可以分為兩種類型的文件:程序文件和數據文件。

就拿我們C語言的程序為例子,包括了程序文件,即后綴為.c的文件;目標文件,即在windows環境下后綴為.obj的文件;可執行程序文件,即后綴為.exe的文件。

數據文件

數據文件,一般指的是用來存儲我們在使用應用程序的時候需要讀寫的數據的文件。

而我們討論的文件的操作也指的是數據文件的操作。

文件名

文件名通常由三部分組成:

文件路徑+文件名主干+文件后綴

C語言關于文件的操作方法總結

 

為什么要使用文件

我們在運行程序的時候,總會產生一些數據,如果我們不對數據進行存儲,那么等待程序結束的時候,數據就會消失。

舉個例子:我們上次寫過的簡易通訊錄(簡易版通訊錄),如果我們這一次運行了這個程序,輸入了信息,但是沒有對數據進行保存,關閉程序后,下次再次運行程序,就看不到之前的數據了。

而我們想要的是,把通訊錄的信息記錄下來,只有我們自己選擇刪除數據的時候,數據才不復存在。

而這就涉及到了數據持久化的問題,我們一般數據持久化的方法有,把數據存放在磁盤文件、存放到數據
庫等方式。

使用文件我們可以將數據直接存放在電腦的硬盤上,做到了數據的持久化。

 

文件的操作

文件緩沖區

C語言是使用“緩沖文件系統”來處理文本文件和二進制文件。

緩沖文件系統就是指系統自動地在內存中為程序中每一個正在使用的文件開辟一個“文件緩沖區”、

這個文件緩沖區就相當于一個“中間人”,會在程序數據區和硬盤文件中充當一個過渡者的身份。

文件指針(FILE)

緩沖文件系統中,關鍵的概念是“文件類型指針”,簡稱“文件指針”。

每個被使用的文件都在內存中開辟了一個相應的文件信息區,用來存放文件的相關信息(如文件的名
字,文件狀態及文件當前的位置等)。這些信息是保存在一個結構體變量中的。該結構體類型是有系統聲明的,取名FILE.

使用該結構體類型來定義文件指針時,需要包含頭文件<stdio.h>。

需要注意的是,不同的C編譯器的FILE類型包含的內容不完全相同,但是大同小異。

每當打開一個文件的時候,系統會根據文件的情況自動創建一個FILE結構的變量,并填充其中的信息,
我們作為使用者不必關心細節。

我們一般都是通過一個FILE的指針來維護這個FILE結構的變量,這樣使用起來更加方便。

FILE* pf;//定義了一個文件指針變量

定義pf是一個指向FILE類型數據的指針變量。可以使pf指向某個文件的文件信息區(是一個結構體變量)。通過該文件信息區中的信息就能夠訪問該文件。也就是說,通過文件指針變量能夠找到與它關聯的文件。

C語言關于文件的操作方法總結

文件的打開和關閉

我們在對文件進行讀寫之前應該先打開文件,在使用結束之后應該關閉文件。

在編寫程序的時候,在打開文件的同時,都會返回一個FILE*的指針變量指向該文件,也相當于建立了指針和文件的關系。

ANSIC 規定使用fopen函數來打開文件,fclose來關閉文件。

//打開文件
FILE * fopen ( const char * filename, const char * mode );
//關閉文件
int fclose ( FILE * stream );

fopen

C語言關于文件的操作方法總結

該函數包含在<stdio.h>頭文件中,用于打開文件的操作。

形參列表列表中的第一個參數是文件的名稱,第二個參數是文件的打開方式。

如果打開成功,我們就可以用一個文件指針來接收返回值,用于管理這個文件;如果打開失敗,就會返回一個空指針。

因此,我們再接收該函數返回值的時候,應該加上一步檢驗是否為空指針的操作。

fclose

C語言關于文件的操作方法總結

該函數同樣包含在<stdio.h>中

當我們使用完文件的時候,記得要關閉文件。

我們通過fclose函數,并把文件指針作為參數傳入即可。

如果關閉成功,該函數就返回0,如果關閉失敗,就會返回EOF(-1)。

文件的打開方式

文件有不同的打開方式,不同的打開方式對應著不同的操作。

文件的使用方式 含義 如果指定文件不存在
“r”(只讀) 為了輸入數據,打開一個已經存在的文本文件 出錯
“w”(只寫) 為了輸出數據,打開一個文本文件 建立一個新的文件
“a”(追加) 向文本文件尾添加數據 建立一個新的文件
“rb”(只讀) 為了輸入數據,打開一個二進制文件 出錯
“wb”(只寫) 為了輸出數據,打開一個二進制文件 建立一個新的文件
“ab”(追加) 向一個二進制文件尾添加數據 出錯
“r+”(讀寫) 為了讀和寫,打開一個文本文件 出錯
“w+”(讀寫) 為了讀和寫,建議一個新的文件 建立一個新的文件
“a+”(讀寫) 打開一個文件,在文件尾進行讀寫 建立一個新的文件
“rb+”(讀寫) 為了讀和寫打開一個二進制文件 出錯
“wb+”(讀寫) 為了讀和寫,新建一個新的二進制文件 建立一個新的文件
“ab+”(讀寫) 打開一個二進制文件,在文件尾進行讀和寫 建立一個新的文件

演示:

#include <stdio.h>
int main()
{
	FILE* pFile;
	//打開文件
	pFile = fopen("myfile.txt", "w");
	//文件操作
	if (pFile != NULL)
	{
		fputs("fopen example", pFile);
		//關閉文件
		fclose(pFile);
	}
	return 0;
}

我們會看到,如果使用的是w的打開方式來使用文件的話,程序會在該代碼所在源文件的目錄下尋找你想要打開的文件,如果文件不存在的話,就會幫自動幫你創建一個。

但是,如果使用的打開方式是r,如果程序發現所在目錄不存在該文件,就會出錯。

例子如下

int main()
{
	FILE* pFile;
	//打開文件
	pFile = fopen("cmyfile.txt", "r");
	//文件操作
	if (pFile == NULL)
	{
		perror("fopen");
		return -1;
	}

	fputs("fopen example", pFile);
	//關閉文件
	fclose(pFile);
	return 0;
}

C語言關于文件的操作方法總結

當我該源文件的文件夾中,并不存在這個文件時,就會出錯,并且我通過了perror這個函數把錯誤信息打印了出來。

需要注意的是,就像上面栗子那樣,只寫了文件名.后綴名,會默認在該源文件所在的文件下進行查找,如果需要指定目錄,則需要在文件名前面加上文件路徑。

例如

#include <stdio.h>
int main()
{
	FILE* pFile;
	//打開文件
	pFile = fopen("c:/program/test/myfile.txt", "w");
	//文件操作
	if (pFile != NULL)
	{
		fputs("fopen example", pFile);
		//關閉文件
		fclose(pFile);
	}
	return 0;
}

注意

在C語言中,如果想要輸入路徑的話,我們一般使用斜杠(/),而不使用反斜杠(\),因為反斜杠是轉義的標志,很有可能你的路徑中,剛好存在可以轉義的內容,這樣就會導致失敗。如果要使用反斜杠,就要兩條反斜杠連在一起用。

以上就是我們在使用一個文件的時候的基本操作,先要打開文件,然后是對文件進行操作,最后是關閉文件。

流的相關概念

流是個高度抽象的概念,我們可以理解為這就相當于時一條通道,就像水流一樣,輸入流可以看作一個輸入通道,輸出流可以看作一個輸出通道。

流,這一條通道,連接的是程序和外部設備。

當外部設備需要把數據輸入到程序的時候,就需要輸入流。

當程序需要把數據輸出到外部設備的時候,就需要輸出流。

按照我個人的理解

標準輸入流,就是連接程序和標準輸入設備(鍵盤)的通道。

標準輸出流,就是鏈接程序和標準輸出設備(屏幕)的通道。

 

文件的順序讀寫

順序讀寫,顧名思義,就是按照先后順序來進行讀取和寫入的操作。

功能 函數名 適用于
字符輸入函數 fgetc 所有輸入流
字符輸出函數 fputc 所有輸出流
文本行輸入函數 fgets 所有輸入流
文本行輸出函數 fputs 所有輸出流
格式化輸入函數 fscanf 所有輸入流
格式化輸出函數 fprintf 所有輸出流
二進制輸入 fread 文件
二進制輸出 fwrite 文件

fputc

C語言關于文件的操作方法總結

這個函數包含在<stdio.h>中,該函數時一個字符一個字符的輸入的。

第一個參數是我們想要輸入的字符,第二個參數就是輸入流。

我們可以這樣理解

我們通過這個函數,把想要輸入的字符,放到對應的流中,然后這個流,會把這個字符送到對應的設備上。

如果我們寫的是標準輸出流,那么就會把數據輸出到屏幕上,我們就可以再控制臺看見了。

C語言關于文件的操作方法總結

fgets

C語言關于文件的操作方法總結

該函數同樣包含在<stdio.h>中,該函數是從流中獲得一個字符。

C語言關于文件的操作方法總結

還有剩下的函數,就不一一舉例了,使用方法都大同小異。

到此這篇關于C語言關于文件的操作方法總結的文章就介紹到這了,更多相關C語言 文件操作內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_61021362/article/details/121189630

延伸 · 閱讀

精彩推薦
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩欧美中文字幕在线视频 | 日日夜夜摸 | 亚洲午夜在线 | 亚洲 欧美 日韩在线 | 国产欧美日韩一区 | 日韩精品www | 国产欧美专区 | 亚洲欧洲视频在线 | 天堂网av在线 | 成人精品网站在线观看 | 久久久影视 | 久久亚洲一区 | 国产一区二区视频精品 | 五月天一区二区 | 日韩欧美在 | 亚洲精品在线观看网站 | 精品粉嫩超白一线天av | 欧美另类国产 | 亚洲国产精品无卡做爰天天 | 久草在线免费福利资源 | 一区二区三区在线免费视频 | 日韩一区在线视频 | 亚洲一本 | 精品国产乱码一区二区三区 | 久久久999成人 | 国产高清亚洲 | 午夜电影在线看 | 99亚洲伊人久久精品影院红桃 | 国产精品一二三区视频出来一 | 国产一在线 | 日韩电影免费观看 | 久久女人精品 | 国产精品久久久久久久久久久久久久 | 狠狠操狠狠干 | 懂色av中文一区二区三区天美 | 最新国产一区 | 日本精品一区二 | 日韩素人一区二区三区 | 欧美国产高清 | 黄色三级网站在线观看 | 欧美中文 |