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

C語(yǔ)言實(shí)現(xiàn)對(duì)文件進(jìn)行操作的示例詳解

 更新時(shí)間:2023年04月09日 09:50:41   作者:悲傷的豬大腸9  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)對(duì)文件進(jìn)行操作的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)C語(yǔ)言有一定的幫助,需要的可以參考一下

前言

文件操作

在運(yùn)行程序的時(shí)候,此時(shí)數(shù)據(jù)是存放在內(nèi)存中,當(dāng)程序退出的時(shí)候,程序中的數(shù)據(jù)自然就不存在了,等下次運(yùn)行程序的時(shí)候,數(shù)據(jù)又得重新錄入,我們可以用文件的辦法,把程序中的數(shù)據(jù)保存下來(lái),只有我們自己選擇刪除數(shù)據(jù)的時(shí)候,數(shù)據(jù)才不復(fù)存在。 這就涉及到了數(shù)據(jù)持久化的問(wèn)題,我們一般數(shù)據(jù)持久化的方法有,把數(shù)據(jù)存放在磁盤文件、存放到數(shù)據(jù)庫(kù)等方式。

文件指針

向文件里輸出或讀取數(shù)據(jù)需要使用文件指針的形式,每個(gè)文件指針可以用來(lái)打開(kāi)一個(gè)文件,這個(gè)文件指針指向文件的文件信息區(qū)。

FILE * 變量名

文件的打開(kāi)和關(guān)閉

文件使用完之后要記得關(guān)閉,不讓會(huì)占用資源,文件關(guān)閉掉之后要記得把指針置空以免出現(xiàn)野指針

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

文件的打開(kāi)方式

文件使用方式    文件使用方式    如果指定文件不存在

文件使用方式文件使用方式如果指定文件不存在
“r”(只讀)為了輸入數(shù)據(jù),打開(kāi)一個(gè)已經(jīng)存在的文本文件出錯(cuò)
“w”(只寫(xiě))為了輸出數(shù)據(jù),打開(kāi)一個(gè)文本文件建立一個(gè)新的文件
“a”(追加)向文本文件尾添加數(shù)據(jù)建立一個(gè)新的文件
“rb”(只讀)為了輸入數(shù)據(jù),打開(kāi)一個(gè)二進(jìn)制文件出錯(cuò)
“wb”(只寫(xiě))為了輸出數(shù)據(jù),打開(kāi)一個(gè)二進(jìn)制文件建立一個(gè)新的文件
“ab”(追加)向一個(gè)二進(jìn)制文件尾添加數(shù)據(jù)出錯(cuò)
“r+”(讀寫(xiě))為了讀和寫(xiě),打開(kāi)一個(gè)文本文件出錯(cuò)
“w+”(讀寫(xiě))為了讀和寫(xiě),建議一個(gè)新的文件建立一個(gè)新的文件
“a+”(讀寫(xiě))打開(kāi)一個(gè)文件,在文件尾進(jìn)行讀寫(xiě)建立一個(gè)新的文件
“rb+”(讀寫(xiě))為了讀和寫(xiě)打開(kāi)一個(gè)二進(jìn)制文件出錯(cuò)
“wb+”(讀寫(xiě))為了讀和寫(xiě),新建一個(gè)新的二進(jìn)制文件建立一個(gè)新的文件
“ab+”(讀寫(xiě))打開(kāi)一個(gè)二進(jìn)制文件,在文件尾進(jìn)行讀和寫(xiě)建立一個(gè)新的文件

代碼示例

#include <stdio.h>
int main()
{
    FILE *pf = fopen("test.txt",'w');
    if(pf==NULL)
    {
        perror("FOPEN:");        //對(duì)文件指針進(jìn)行判斷以免返回空指針;
    }
    fput("haohaoxuexi,tiantianxiangshang",pf);
    fclose(pf);
    pf=NULL;            //文件關(guān)閉之后把指針置為空,以免出現(xiàn)野指針
}

‘ w ’ 沒(méi)有文件的情況下會(huì)新建一個(gè)文件在此程序文件夾下,可以看到文件已經(jīng)生成了。

文件讀寫(xiě)函數(shù)

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

二進(jìn)制方式存儲(chǔ)文件

二進(jìn)制存儲(chǔ)在文件內(nèi)是查看不到具體信息的,要想在文件內(nèi)查看具體信息要選擇其他函數(shù)。

二進(jìn)制形式存儲(chǔ)代碼示例

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <malloc.h>

struct student
{
    char name[20];
    int age;
    char adress[20];
}*s1;
int main()
{
    s1 = (struct student*)malloc(sizeof(struct student));
    if (s1 == NULL)
    {
        perror("malloc:");
        return 0;
    }
    FILE* pf = fopen("test.txt", "wb");
    if (pf == NULL)
    {
        perror("FOPEN:");   //對(duì)文件指針進(jìn)行判斷以免返回空指針;
        return 0;
    }
    strcpy(s1->name, "陳獨(dú)秀");
    s1->age = 18;
    strcpy(s1->adress,"東城區(qū)箭桿胡同20號(hào)");
    fwrite(s1, sizeof(struct student), 1, pf);
    fclose(pf);
    pf = NULL;
}

結(jié)果:

可以看到文件已經(jīng)出現(xiàn)了部分亂碼,還能看到文字的原因是文本文件打開(kāi)的時(shí)候默認(rèn)以一種編碼形式打開(kāi),將本來(lái)存到文本里的二進(jìn)制信息進(jìn)行了解碼。

對(duì)文件進(jìn)行拷貝

這里要注意\需要再用\轉(zhuǎn)義,否則是轉(zhuǎn)義字符的意思

  • 先打開(kāi)要拷貝的文件,再打開(kāi)新建拷貝后的文件進(jìn)行拷貝
  • 如果是圖片視頻等文件,要使用二進(jìn)制的方式打開(kāi)、讀取和存儲(chǔ),否則文件會(huì)損壞
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <malloc.h>

int main()
{
    FILE* pfr = fopen("C:\\Users\\22763\\Pictures\\Saved Pictures\\QQ圖片20211001085735.jpg", "rb"); 		//要拷貝的文件目錄
    FILE* pfw = fopen("CopyPic.jpg", "wb");
    char temp;
    if (pfw == NULL||pfr==NULL)
    {
        perror("FOPEN:");   //對(duì)文件指針進(jìn)行判斷以免返回空指針;
        return 0;
    }
    while (fread(&temp, sizeof(char), 1, pfr))
    {
        fwrite(&temp, sizeof(char), 1, pfw);
    }
    fclose(pfw);
    fclose(pfr);
    pfw = NULL;
    pfr = NULL;
}

文件隨機(jī)讀寫(xiě)函數(shù)

這三個(gè)函數(shù)并不常用,所有只要知道有這三個(gè)函數(shù)就行了以及他們是干什么的就可以了,用的時(shí)候再查。

fseek

int fseek(FILE stream,long offset,int origin );

根據(jù)文件指針的位置和偏移量來(lái)定位文件指針。

ftell

long ftell( FILE *stream );

返回文件指針相對(duì)于起始位置的偏移量

rewind

void rewind( FILE *stream );

讓文件指針的位置回到文件的起始位置

文件緩沖區(qū)

文件在讀或者寫(xiě)的時(shí)候存在一個(gè)文件緩沖區(qū),因?yàn)榕c磁盤交互,需要一定時(shí)間(盡管很短),但是為了盡可能的節(jié)省時(shí)間,系統(tǒng)自動(dòng)地在內(nèi)存中設(shè)立了文件緩沖區(qū),等攢夠一定的數(shù)據(jù),或者程序結(jié)束,一起讀或?qū)?,這樣大大提高讀寫(xiě)速度,避免每個(gè)字符都要進(jìn)行一次讀或?qū)憽?/p>

以上就是C語(yǔ)言實(shí)現(xiàn)對(duì)文件進(jìn)行操作的示例詳解的詳細(xì)內(nèi)容,更多關(guān)于C語(yǔ)言文件操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++標(biāo)準(zhǔn)模板庫(kù)STL深入講解

    C++標(biāo)準(zhǔn)模板庫(kù)STL深入講解

    STL提供了一組表示容器、迭代器、函數(shù)對(duì)象和算法的模板。容器是一個(gè)與數(shù)組類似的單元,可以存儲(chǔ)若干個(gè)值。STL容器是同質(zhì)的,即存儲(chǔ)的值的類型相同:算法是完成特定任務(wù)(如對(duì)數(shù)組進(jìn)行排序或在鏈表中查找特定值)的處方
    2022-12-12
  • c語(yǔ)言B樹(shù)深入理解

    c語(yǔ)言B樹(shù)深入理解

    B樹(shù)是為磁盤或其他直接存儲(chǔ)設(shè)備設(shè)計(jì)的一種平衡查找樹(shù),本文將詳細(xì)介紹c語(yǔ)言B樹(shù),需要的朋友可以參考下
    2012-11-11
  • C++之a(chǎn)ssert推薦用法及注意事項(xiàng)

    C++之a(chǎn)ssert推薦用法及注意事項(xiàng)

    這篇文章主要給大家介紹了關(guān)于C++之a(chǎn)ssert推薦用法及注意事項(xiàng)的相關(guān)資料,assert 是一個(gè)預(yù)處理宏,用于在運(yùn)行時(shí)檢查表達(dá)式是否為真,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 基于opencv實(shí)現(xiàn)視頻中的顏色識(shí)別功能

    基于opencv實(shí)現(xiàn)視頻中的顏色識(shí)別功能

    這篇文章主要介紹了基于opencv實(shí)現(xiàn)視頻中的顏色識(shí)別功能,文章詳細(xì)介紹了顏色識(shí)別的原理及opencv中的顏色模型,基于c++代碼實(shí)現(xiàn)顏色識(shí)別功能,需要的朋友可以參考下
    2022-07-07
  • dev?c++的使用和調(diào)試方式

    dev?c++的使用和調(diào)試方式

    這篇文章主要介紹了dev?c++?的使用和調(diào)試方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • C++序列操作函數(shù)學(xué)習(xí)最全指南

    C++序列操作函數(shù)學(xué)習(xí)最全指南

    這篇文章主要給大家介紹了關(guān)于C++序列操作函數(shù)學(xué)習(xí)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C++具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02
  • C++之重載 重定義與重寫(xiě)用法詳解

    C++之重載 重定義與重寫(xiě)用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫(xiě)用法詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • C語(yǔ)言簡(jiǎn)易通訊錄的實(shí)現(xiàn)代碼

    C語(yǔ)言簡(jiǎn)易通訊錄的實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言簡(jiǎn)易通訊錄的實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • static關(guān)鍵字的作用詳解

    static關(guān)鍵字的作用詳解

    在C語(yǔ)言中,static的字面意思很容易把我們導(dǎo)入歧途,其實(shí)它的作用有三條。
    2013-04-04
  • c++代碼實(shí)現(xiàn)tea加密算法的實(shí)例詳解

    c++代碼實(shí)現(xiàn)tea加密算法的實(shí)例詳解

    這篇文章主要介紹了c++代碼實(shí)現(xiàn)tea加密算法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評(píng)論

渭源县| 锦屏县| 周宁县| 筠连县| 蒙城县| 黔南| 和硕县| 枣庄市| 潞城市| 越西县| 沁源县| 沅江市| 定结县| 长兴县| 安宁市| 天台县| 黄冈市| 丹巴县| 武威市| 宜阳县| 北宁市| 安达市| 延寿县| 松滋市| 茌平县| 长垣县| 万载县| 万宁市| 奎屯市| 疏勒县| 彭水| 阿城市| 平山县| 沽源县| 玉田县| 延长县| 嘉义市| 伽师县| 琼海市| 含山县| 九台市|