中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言怎么實現對文件進行操作

發布時間:2023-04-19 11:23:44 來源:億速云 閱讀:107 作者:iii 欄目:開發技術

這篇“C語言怎么實現對文件進行操作”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“C語言怎么實現對文件進行操作”文章吧。

文件指針

向文件里輸出或讀取數據需要使用文件指針的形式,每個文件指針可以用來打開一個文件,這個文件指針指向文件的文件信息區。

FILE * 變量名

文件的打開和關閉

文件使用完之后要記得關閉,不讓會占用資源,文件關閉掉之后要記得把指針置空以免出現野指針

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

文件的打開方式

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

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

代碼示例

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

&lsquo; w &rsquo; 沒有文件的情況下會新建一個文件在此程序文件夾下,可以看到文件已經生成了。

文件讀寫函數

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

二進制方式存儲文件

二進制存儲在文件內是查看不到具體信息的,要想在文件內查看具體信息要選擇其他函數。

二進制形式存儲代碼示例

#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:");   //對文件指針進行判斷以免返回空指針;
        return 0;
    }
    strcpy(s1->name, "陳獨秀");
    s1->age = 18;
    strcpy(s1->adress,"東城區箭桿胡同20號");
    fwrite(s1, sizeof(struct student), 1, pf);
    fclose(pf);
    pf = NULL;
}

結果:

C語言怎么實現對文件進行操作

可以看到文件已經出現了部分亂碼,還能看到文字的原因是文本文件打開的時候默認以一種編碼形式打開,將本來存到文本里的二進制信息進行了解碼。

對文件進行拷貝

這里要注意\需要再用\轉義,否則是轉義字符的意思

  • 先打開要拷貝的文件,再打開新建拷貝后的文件進行拷貝

  • 如果是圖片視頻等文件,要使用二進制的方式打開、讀取和存儲,否則文件會損壞

#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:");   //對文件指針進行判斷以免返回空指針;
        return 0;
    }
    while (fread(&temp, sizeof(char), 1, pfr))
    {
        fwrite(&temp, sizeof(char), 1, pfw);
    }
    fclose(pfw);
    fclose(pfr);
    pfw = NULL;
    pfr = NULL;
}

文件隨機讀寫函數

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

fseek

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

根據文件指針的位置和偏移量來定位文件指針。

ftell

long ftell( FILE *stream );

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

rewind

void rewind( FILE *stream );

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

文件緩沖區

文件在讀或者寫的時候存在一個文件緩沖區,因為與磁盤交互,需要一定時間(盡管很短),但是為了盡可能的節省時間,系統自動地在內存中設立了文件緩沖區,等攢夠一定的數據,或者程序結束,一起讀或寫,這樣大大提高讀寫速度,避免每個字符都要進行一次讀或寫。

以上就是關于“C語言怎么實現對文件進行操作”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

阳新县| 迭部县| 育儿| 顺昌县| 黑河市| 大新县| 瑞丽市| 洛扎县| 绥德县| 凤山县| 华容县| 金山区| 大埔县| 石屏县| 台北市| 长子县| 兰溪市| 信丰县| 鄢陵县| 财经| 内黄县| 大渡口区| 聂拉木县| 甘谷县| 芒康县| 双流县| 筠连县| 武宣县| 克东县| 专栏| 新蔡县| 建瓯市| 冀州市| 蒙山县| 二手房| 内江市| 乡宁县| 仁寿县| 金秀| 台州市| 田林县|