tft每日頭條

 > 科技

 > linuxc語言如何取得目錄信息

linuxc語言如何取得目錄信息

科技 更新时间:2024-11-18 19:13:42
文件的定義

在使用電腦的時候,我們經常操作文件。例如,我們可以新建一個.txt類型的文本文件,在裡面存放數據。在Windows電腦下,進入一個文件夾,單擊右鍵,選擇“新建”---> “文本文檔”,如下圖:

linuxc語言如何取得目錄信息(C語言如何操作文件)1

此時,我們新建一個.txt類型的文本文件。我們可以設置該文件的名稱是123.txt,如下圖:

linuxc語言如何取得目錄信息(C語言如何操作文件)2

然後,我們可以在該文件中存儲數據。雙擊打開123.txt文本文件,然後,輸入需要存儲的數據,如下圖:

linuxc語言如何取得目錄信息(C語言如何操作文件)3

最後,單擊左上角的“文件”---> “保存”就可以保存文件的數據。該文件保存到硬盤上。例如,上面的例子,創建的123.txt文件就保存到G盤目錄下。保存文件之後。此時,在電腦上就新建了一個123.txt文件,文件裡存放“aaabbb”字符串信息。

此時,我們通過鍵盤和鼠标,新建了一個文本文件,并給文件寫入數據。那麼,我們能否通過軟件來自動實現這個功能?

C語言提供了一系列的接口函數,用于操作文件。可以新建一個文件、讀寫文件的數據。下面我們學習C語言對文件的操作,并結合實際的例子,掌握這些文件操作函數在實際項目中的應用。

2 文件指針的分析

标準C語言提供了fopen(), fread(), fwrite(), fgets(), fputs(), fclose()等函數,用于操作一個文件。假設有123.txt 文件,我們把文件的内容,讀取到内存中,有如下的操作流程:

(1) 調用fopen()打開123.txt文件;

(2) 調用fread()函數,從123.txt文件讀取數據;

(3) 調用fclose()函數,關閉打開的123.txt文件;

那麼,在這個操作流程中,都圍繞着一個對象進行,就是fopen()函數返回的文件指針對象。根據fopen()函數的定義如下:

FILE* fopen(const char *path, const char *mode);

該函數返回一個FILE*類型的指針變量,我們稱為:文件指針。

例如,調用fopen()函數打開123.txt文件,如下:

FILE* fp = NULL; //定義文件指針變量;

fp = fopen("123.txt", "r"); //打開文件,獲取返回的文件指針;

調用fopen()函數打開123.txt文件成功之後,就返回一個FILE*類型的文件指針,并賦值給文件指針變量fp,那麼,文件指針變量fp指向123.txt文件。

然後,調用fread()函數從fp文件指針讀取數據,就是從文件指針fp指向的123.txt文件讀取數據。

操作完之後,需要調用fclose()函數來關閉文件指針fp。那麼,文件指針fp就不再指向123.txt文件。此時,再調用fread()、fwrite()函數來操作,都不會對123.txt文件有任何影響。

所以,這一系列的文件操作函數,都是圍繞FILE*類型的文件指針進行。FILE結構體是标準C語言定義的一個類型,我們不用去理解該結構體的定義,隻需要知道fopen(), fread(), fclose()等函數的應用,通過這些函數來實現對文件的操作。

3 文件的操作

對文件的操作,必須調用fopen()函數打開文件,得到一個FILE*類型的文件指針,然後,調用fread()、fwrite()等函數對文件進行讀寫操作。操作完之後,需要調用fclose()函數關閉打開的文件。

所以,調用fopen()函數打開文件,最後,調用fclose()函數關閉文件。

3.1 打開文件讀取數據

C語言提供了fopen()函數,用于打開一個文件,函數定義如下:

FILE* fopen(const char *path, const char *mode);

函數說明:打開 path 參數指向的文件。mode參數是文件打開的模式。根據該模式,以不同的方式打開文件。

返回值:成功返回指向打開文件的文件指針,否則,返回NULL。

參數mode有不同的組合,可以對打開的文件進行不同的操作。該參數的取值如下:

"r" --- 打開一個用于讀取的文本文件

"w" --- 創建一個用于寫入的文本文件

"a" --- 附加(追加寫入數據)到一個文本文件

"rb" --- 打開一個用于讀取的二進制文件,字母b是binary表示二進制數據流英文的首字母。

"wb" --- 創建一個用于寫入的二進制文件

"ab" --- 附加(追加寫入數據)到一個二進制文件

"r " --- 打開一個用于讀/寫的文本文件

"w " --- 創建一個用于讀/寫的文本文件

"a " --- 打開一個用于讀/寫的文本文件

"rt" --- 隻讀打開一個文本文件,隻允許讀數據

"wt" --- t(text): 文本文件,可省略不寫,隻寫方式打開或建立一個文本文件,隻允許寫數據

"at" --- t(text): 文本文件,可省略不寫,追加打開一個文本文件,并在文件末尾寫數據

"rb" --- 隻讀打開一個二進制文件,隻允許讀數據

"wb" --- 隻寫打開或建立一個二進制文件,隻允許寫數據

"ab" --- 追加打開一個二進制文件,并在文件末尾寫數據

"rt " --- t(text): 文本文件,可省略不寫,讀寫打開一個文本文件,允許讀和寫

"wt " --- t(text): 文本文件,可省略不寫,讀寫打開或建立一個文本文件,允許讀寫

"at " --- 讀寫打開一個文本文件,允許讀,或在文件末追加數據

"rb " --- 讀寫打開一個二進制文件,允許讀和寫

"wb " --- 讀寫打開或建立一個二進制文件,允許讀和寫

"ab " --- 讀寫打開一個二進制文件,允許讀,或在文件末追加數據

打開文件之後,可以調用fread()函數,讀取文件數據,函數定義如下:

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

函數說明:函數從stream文件指針指向的文件讀取數據,把數據讀取到ptr緩存中。讀取size個數據塊,每個數據塊的容量是count個字節。所以,總共讀取的字節數是size*count個字節。

返回值:返回成功讀取到的數據塊個數,注意,不是字節數,是參數size表示的數據塊個數。

文件操作完之後,調用fclose()關閉打開的文件。函數的定義如下:

int fclose(FILE *fp);

函數說明:關閉參數fp函數指針,該函數指針是fopen()打開文件所得。所以,打開文件之後,需要關閉該文件。

下面我們編寫一個程序,調用C語言提供的API函數,打開一個文件,然後從文件讀取數據,最後關閉文件指針。

首先,新建一個test.txt文件,往裡面存放 "mylinux.vip" 字符串,操作如下:

echo "mylinux.vip" > test.txt

就是調用echo命令,把"mylinux.vip"字符串輸出到test.txt文件中。然後,用cat命令查看該文件的内容,操作如下:

linuxc語言如何取得目錄信息(C語言如何操作文件)4

可以看到,test.txt文件存放了" mylinux.vip "字符串。那麼,我們就編寫程序,讀取test.txt文件中的數據。測試代碼如下:

linuxc語言如何取得目錄信息(C語言如何操作文件)5

調用fopen()函數打開文件的時候,我們隻是想對test.txt文件進行讀取操作,所以,fopen()函數的第二個參數取值 "r" 字符串,表示進行 read 操作。那麼,我們就可以調用fread()函數對打開的文件進行讀取操作。通過fread()函數,正确讀取到test.txt文件中存放的數據,把數據讀取到buf[]緩存中。最後,調用fclose()關閉打開的文件指針。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved