国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

如何使用 “C語言” 對文件進行操作?

這篇具有很好參考價值的文章主要介紹了如何使用 “C語言” 對文件進行操作?。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


前言

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

文件指針:

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

FILE * 變量名 ??

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

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

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

文件的打開方式

文件使用方式 文件使用方式 如果指定文件不存在
“r”(只讀) 為了輸入數(shù)據(jù),打開一個已經(jīng)存在的文本文件 出錯
“w”(只寫) 為了輸出數(shù)據(jù),打開一個文本文件 建立一個新的文件
“a”(追加) 向文本文件尾添加數(shù)據(jù) 建立一個新的文件
“rb”(只讀) 為了輸入數(shù)據(jù),打開一個二進制文件 出錯
“wb”(只寫) 為了輸出數(shù)據(jù),打開一個二進制文件 建立一個新的文件
“ab”(追加) 向一個二進制文件尾添加數(shù)據(jù) 出錯
“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;			//文件關(guān)閉之后把指針置為空,以免出現(xiàn)野指針
}

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

在這里插入圖片描述


文件讀寫函數(shù)

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

二進制方式存儲文件

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

二進制形式存儲代碼示例

#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,"東城區(qū)箭桿胡同20號");
    fwrite(s1, sizeof(struct student), 1, pf);
    fclose(pf);
    pf = NULL;
}

結(jié)果:

如何使用 “C語言” 對文件進行操作?

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

對文件進行拷貝

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

  • 先打開要拷貝的文件,再打開新建拷貝后的文件進行拷貝
  • 如果是圖片視頻等文件,要使用二進制的方式打開、讀取和存儲,否則文件會損壞
#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;
}

文件隨機讀寫函數(shù)

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

fseek

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

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

ftell

long ftell( FILE *stream );

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

rewind

void rewind( FILE *stream );

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

文件緩沖區(qū)

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

刪除線格式


撒花

這就是文件操作的全部內(nèi)容了,創(chuàng)作不易,還請各位小伙伴多多點贊??關(guān)注收藏?,以后也會更新各種小游戲還有關(guān)于c語言的博客,撒花!文章來源地址http://www.zghlxwxcb.cn/news/detail-411860.html

到了這里,關(guān)于如何使用 “C語言” 對文件進行操作?的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 如何在 Linux下進行文件切割操作?

    導(dǎo)讀 往往是因為網(wǎng)絡(luò)傳輸?shù)南拗疲瑢?dǎo)致很多時候,我們需要在?Linux?系統(tǒng)下進行大文件的切割。這樣將一個大文件切割成為多個小文件,進行傳輸,傳輸完畢之后進行合并即可。 1. 文件切割 - split 在 Linux 系統(tǒng)下使用 split?命令進行大文件切割很方便 ?[1]?命令語法 [2] 使用實

    2024年02月10日
    瀏覽(16)
  • 如何在C語言中進行字符串的查找操作?

    首先,要進行字符串的查找操作,我們需要使用到C語言中的字符串函數(shù)。這些函數(shù)包括strlen()、strcmp()、strcat()、strcpy()、strstr()等等,它們可以實現(xiàn)字符串的長度計算、比較、拼接、復(fù)制、查找等操作。 如果要在一個字符串中查找另外一個子串,我們可以使用strstr()函數(shù)來實

    2024年02月13日
    瀏覽(35)
  • C#語言基礎(chǔ)問題16:C# 中如何進行加密和解密操作?

    在 C# 中,可以使用以下幾種常見的加密算法進行加密和解密操作: 對稱加密算法:使用相同的密鑰對數(shù)據(jù)進行加密和解密,常見的對稱加密算法有 DES、3DES、AES 等。 非對稱加密算法:使用公鑰和私鑰進行加密和解密,常見的非對稱加密算法有 RSA、DSA 等。 散列算法:將數(shù)據(jù)

    2024年02月13日
    瀏覽(16)
  • 什么是硬件編程,C 語言如何進行硬件編程?C 語言常用的操作系統(tǒng)有哪些?

    硬件編程是指使用編程語言與硬件交互,控制硬件設(shè)備的行為和功能。其中,C語言是一種廣泛用于硬件編程的高級編程語言。 C語言通過直接操作內(nèi)存來進行硬件編程。它提供了一些特殊的和庫函數(shù),使得開發(fā)者可以直接訪問和操作硬件設(shè)備的寄存器、端口和外設(shè)等。

    2024年02月15日
    瀏覽(21)
  • C語言--文件操作詳解(2)(文本文件和二進制文件,文件讀取結(jié)束的判定,用函數(shù)進行文件的拷貝,文件緩沖區(qū))

    C語言--文件操作詳解(2)(文本文件和二進制文件,文件讀取結(jié)束的判定,用函數(shù)進行文件的拷貝,文件緩沖區(qū))

    本篇文章主要介紹了文本文件和二進制文件,文件讀取結(jié)束的判定,如何使用函數(shù)進行文件的拷貝,文件緩沖區(qū)的相關(guān)知識。 以及具有保存功能的八功能通訊錄的源碼。 據(jù)數(shù)據(jù)的組織形式,數(shù)據(jù)文件被稱為文本文件或者二進制文件。 ①數(shù)據(jù)在內(nèi)存中以二進制的形式存儲,如

    2024年02月08日
    瀏覽(27)
  • 【頭歌】——數(shù)據(jù)分析與實踐-基于Python語言的文件與文件夾管理-文本 文件處理-利用csv模塊進行csv文件的讀寫操作

    第1關(guān) 創(chuàng)建子文件夾 第2關(guān) 刪除帶有只讀屬性的文件 第3關(guān) 批量復(fù)制文件夾中的所有文件 未通過本題,如果您通過了本題歡迎補充到評論區(qū),有時間我會整理進來 第1關(guān) 讀取宋詞文件,根據(jù)詞人建立多個文件 第2關(guān) 讀取宋詞文件,并根據(jù)詞人建立多個文件夾 第3關(guān) 讀取宋詞文

    2024年01月25日
    瀏覽(103)
  • 【vim進階】vim編輯器的多文件操作(如何打開多個文件,如何進行文件間的切換,如何關(guān)閉其中的某一個文件)

    【vim進階】vim編輯器的多文件操作(如何打開多個文件,如何進行文件間的切換,如何關(guān)閉其中的某一個文件)

    現(xiàn)在有多個文件 file1 ,file2 , … ,filen. 現(xiàn)在舉例打開兩個文件 file1,file2 該方式打開文件,顯示屏默認顯示第一個文件也就是 file1。 在命令模式下使用edit指令 打開一個文件可以通過: edit filename(或者簡寫為 e ) 。這里的文件名可以采用絕對路徑或者是相對路徑。 例如我們想打

    2024年02月16日
    瀏覽(26)
  • 如何使用PyQt進行數(shù)據(jù)庫操作?

    首先,我們要知道,PyQt是一個非常強大的圖形用戶界面(GUI)開發(fā)庫,它允許我們使用Python語言創(chuàng)建美觀且高度交互的桌面應(yīng)用程序。然而,對于數(shù)據(jù)庫操作,PyQt并不直接提供此類功能。這需要我們使用其他的數(shù)據(jù)庫庫,例如SQLite、MySQL或PostgreSQL等。 對于新手來說,我建議

    2024年02月11日
    瀏覽(89)
  • VoxPoser:使用語言模型進行機器人操作的可組合 3D 值圖

    VoxPoser:使用語言模型進行機器人操作的可組合 3D 值圖

    語言是一種壓縮媒介,人們通過它來提煉和傳達他們對世界的知識和經(jīng)驗。大型語言模型(LLMs)已成為一種有前景的方法,通過將世界投影到語言空間中來捕捉這種抽象。雖然這些模型被認為在文本形式中內(nèi)化了可概括的知識,但如何利用這種可概括的知識使具身代理能夠在

    2024年02月03日
    瀏覽(88)
  • 如何在linux(ubantu)操作系統(tǒng)運行c語言文件

    如何在linux(ubantu)操作系統(tǒng)運行c語言文件

    關(guān)于linux的其他文章: ?1.linux命令、vi命令、vim命令、shell語法(完整詳細) 2.linux(ubantu)系統(tǒng)如何安裝vim編輯器以及如何使用vim 3.如何在linux(ubantu)操作系統(tǒng)運行c語言文件 4.如何在Linux(ubantu)系統(tǒng)通過c程序?qū)⑽臋n1指定內(nèi)容替換到文檔2的指定內(nèi)容 5.如何在Linux(ubantu)系統(tǒng)

    2023年04月08日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包