欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言文件操作詳情(一)

 更新時(shí)間:2022年04月26日 17:19:40   作者:不知名小賴(lài)  
這篇文章主要介紹了C語(yǔ)言文件操作詳情,主要討論的是數(shù)據(jù)文件,通過(guò)處理的磁盤(pán)上的文件展開(kāi)主題內(nèi)容介紹,需要的小伙伴可以參考一下,希望對(duì)你的學(xué)習(xí)有所幫助

前言:

文件操作重要嗎?

當(dāng)然重要:如果我們想讓自己的程序擁有記憶功能,那就需要把要記憶的信息和數(shù)據(jù)存入到一個(gè)外部文件里,以便下次提取。

一、文件是什么

磁盤(pán)上的文件是文件。但在程序設(shè)計(jì)中,我們一般談的文件有兩種:程序文件、數(shù)據(jù)文件

  • 程序文件:包括源程序文件(后綴 .c),目標(biāo)文件(后綴 .obj)可執(zhí)行程序(windows環(huán)境后綴為 .exe)。
  • 數(shù)據(jù)文件:文件的內(nèi)容不一定是程序,而是程序運(yùn)行時(shí)讀寫(xiě)的數(shù)據(jù),比如程序運(yùn)行需要從中讀取數(shù)據(jù)的文件,或則輸出內(nèi)容的文件。

VS編譯器上所處理的數(shù)據(jù)的輸入和輸出都是以終端為對(duì)象的,即從終端的鍵盤(pán)上輸入輸入數(shù)據(jù),運(yùn)行結(jié)果顯示到顯示器上。但在有時(shí)候我們會(huì)把數(shù)據(jù)輸出到磁盤(pán)上,在需要的時(shí)候再?gòu)拇疟P(pán)上把數(shù)據(jù)讀取到內(nèi)存中使用,這里就是處理的磁盤(pán)上的文件。

文件包含三部分:文件路勁+文件名主干+文件后綴  

例如:c:\code\test.txt

二、文件類(lèi)型

根據(jù)數(shù)據(jù)的組織形式數(shù)據(jù)文件被稱(chēng)為文本文件二進(jìn)制文件

  • ASCII文件也稱(chēng)為文本文件,這種文件在磁盤(pán)中存放時(shí)每個(gè)字符對(duì)應(yīng)一個(gè)字節(jié),用于存放對(duì)應(yīng)的ASCII碼
  • 數(shù)據(jù)在內(nèi)存中以二進(jìn)制的形式存儲(chǔ),如果不加轉(zhuǎn)換的輸出到外層,就是二進(jìn)制文件

例如,數(shù)1000的存儲(chǔ)形式為:

ASCLL碼形式: 00110001 00110000 00110000 00110000 00110000 占5個(gè)字節(jié)
二進(jìn)制形式存儲(chǔ):00000000 00000000 00100111 00010000 占4個(gè)字節(jié)

三、文件緩沖區(qū)

我們?cè)趯W(xué)習(xí)C語(yǔ)言文件操作時(shí)我們也要簡(jiǎn)單的了解一下C語(yǔ)言的文件緩沖區(qū)概念:

  • 緩沖區(qū)Buffer)又稱(chēng)為緩存(Cache),是內(nèi)存空間的一部分。也就是說(shuō),計(jì)算機(jī)在內(nèi)存中預(yù)留了一定的存儲(chǔ)空間,用來(lái)暫時(shí)保存輸入或輸出的數(shù)據(jù),這部分預(yù)留的空間就叫做緩沖區(qū)(緩存)。
  • 在程序數(shù)據(jù)區(qū)到磁盤(pán)之間有輸出緩沖區(qū)輸入緩沖區(qū),這些有興趣的可以去深入了解一下

緩沖區(qū)是為了讓低速的輸入輸出設(shè)備和高速的用戶(hù)程序能夠協(xié)調(diào)工作,并降低輸入輸出設(shè)備的讀寫(xiě)次數(shù)。

四、文件指針

緩沖文件系中:關(guān)鍵的概念是“文件類(lèi)型指針”,簡(jiǎn)稱(chēng)**“文件指針”**
  每個(gè)被使用的文件都在內(nèi)存中開(kāi)辟了一個(gè)相應(yīng)的文件信息區(qū),用來(lái)存放文件的相關(guān)信息(如:文件的名字,狀態(tài)及文件當(dāng)前的位置等)。這些信息保存在一個(gè)結(jié)構(gòu)體變量中的。該結(jié)構(gòu)體變量是有系統(tǒng)申明的取名:FILE

在使用的vs2013編譯器的頭文件stdio.h有以下的文件類(lèi)型聲名:

C語(yǔ)言文件操作<一>_文本文件

不同c編譯器的FILE所包含的內(nèi)容不完全相同,但是大同小異,

每當(dāng)打開(kāi)一個(gè)文件的時(shí)候,系統(tǒng)會(huì)根據(jù)文件的情況自動(dòng)創(chuàng)建一個(gè)FILE結(jié)構(gòu)的變量,并 填充其中的信息。

一般都是通過(guò)一個(gè)FILE的指針來(lái)維護(hù)這個(gè)結(jié)構(gòu)的變量。

FILE* pf;//文件指針變量

定義pf是一個(gè)指向FILE類(lèi)型數(shù)據(jù)的指針變量,可以使pf指向某個(gè)文件的文件信息區(qū)(是一個(gè)結(jié)構(gòu)體變量)。通過(guò)該文件信息區(qū)中的信息就可以訪問(wèn)該文件。也就是說(shuō),通過(guò)文件指針變量能夠找到與它關(guān)聯(lián)的文件

C語(yǔ)言文件操作<一>_打開(kāi)文件_02

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

文件在讀寫(xiě)之前應(yīng)該先打開(kāi)文件,在使用結(jié)束之后應(yīng)該關(guān)閉文件

編寫(xiě)程序時(shí),在打開(kāi)文件的同時(shí),都會(huì)返回一個(gè)FILE的指針變量指向該文件相當(dāng)于建立了指針與文件的關(guān)系。

  • fopen 函數(shù)打開(kāi)文件,fclose 來(lái)關(guān)閉文件
FILE *fopen(const char *filename, const char *mode);
int fclose(FILE *stream);

打開(kāi)文件一般有兩種方式:

  • 當(dāng)前路勁下(相對(duì)路徑)打開(kāi)文件
  • 絕對(duì)路徑打開(kāi)
//以讀的方式打開(kāi)
//當(dāng)前路勁下(相對(duì)路徑)打開(kāi)文件test.txt
fopen("test.txt", "r");
//絕對(duì)路徑打開(kāi)
fopen("E:\\C++file\\file\\test.txt", "r");

打開(kāi)方式如下:

  • “r”(只讀) 為輸入打開(kāi)一個(gè)已經(jīng)存在的文本文件
  • “w”(只寫(xiě)) 為輸出打開(kāi)一個(gè)文本文件
  • “a”(追加) 向文件文件尾添加數(shù)據(jù)
  • “rb”(只讀) 為輸入打開(kāi)一個(gè)二進(jìn)制文件
  • “wb”(只寫(xiě)) 為輸出打開(kāi)一個(gè)二進(jìn)制文件
  • “r+”(讀寫(xiě)) 為讀寫(xiě)打開(kāi)一個(gè)文本文件
  • “w+”(讀寫(xiě)) 為讀寫(xiě)建立一個(gè)新的文本文件
  • “a+”(讀寫(xiě)) 為讀寫(xiě)打開(kāi)一個(gè)文本文件
  • “rb+”(讀寫(xiě)) 為讀寫(xiě)打開(kāi)一個(gè)二進(jìn)制文件
  • “wb+”(讀寫(xiě)) 為讀寫(xiě)建立一個(gè)新的二進(jìn)制文件
  • “ab+”(讀寫(xiě)) 為讀寫(xiě)打開(kāi)一個(gè)二進(jìn)制文件

注意:

  • 用 “r” 方式打開(kāi)的文件,不能向其輸入數(shù)據(jù),并且該文件已存在,否則出錯(cuò);
  • 用 “w” 方式打開(kāi)的文件,只能向該文件輸入數(shù)據(jù),如果所打開(kāi)的文件不存在,則在打開(kāi)時(shí)新建一個(gè)以指定的名字命名的文件;如果指定文件存在,則在打開(kāi)時(shí)將該文件刪去,然后新建一個(gè)新的文件;
  • 如果函數(shù) fopen 打開(kāi)文件出錯(cuò),則fopen返回一個(gè)空指針值 NULL;
  • 在程序開(kāi)始運(yùn)行時(shí),系統(tǒng)自動(dòng)打開(kāi)3個(gè)標(biāo)準(zhǔn)文件:標(biāo)準(zhǔn)輸入(stdin),標(biāo)準(zhǔn)輸出(stdout),標(biāo)準(zhǔn)出錯(cuò)輸 出(stderr)。如果要使用輸入輸出終端,則不需要打開(kāi),可以直接使用,如fputc(stdout,‘a’);向屏幕輸出字符a。

C語(yǔ)言文件操作<一>_打開(kāi)文件_03

  • 以讀的形式打開(kāi)文件文件必須存在
  • 以寫(xiě)的形式打開(kāi)的文件,只能向該文件輸入數(shù)據(jù),如果所打開(kāi)的文件不存在,則在打開(kāi)時(shí)新建一個(gè)以指定的名字命名的文件;如果指定文件存在,則在打開(kāi)時(shí)將該文件刪去,然后新建一個(gè)新的文件;

到此這篇關(guān)于C語(yǔ)言文件操作詳情(一)的文章就介紹到這了,更多相關(guān)C語(yǔ)言文件操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言超詳細(xì)講解排序算法上篇

    C語(yǔ)言超詳細(xì)講解排序算法上篇

    時(shí)間如流水,今天就到初階數(shù)據(jù)結(jié)構(gòu)最后一個(gè)知識(shí)章節(jié)了,常見(jiàn)的排序算法!在進(jìn)入這期之前,程愛(ài)打籃球的程序猿想說(shuō)一句,如果有不懂的地方可以反復(fù)觀看我之前的內(nèi)容,再還有不懂可以直接找我,幫你安排的妥妥的
    2022-03-03
  • C語(yǔ)言字母轉(zhuǎn)換大小寫(xiě)的3種方法圖文詳解

    C語(yǔ)言字母轉(zhuǎn)換大小寫(xiě)的3種方法圖文詳解

    我們?cè)贑語(yǔ)言入門(mén)的時(shí)候都會(huì)遇到要求寫(xiě)大小寫(xiě)轉(zhuǎn)換的題目,所以下面這篇文章主要給大家介紹了關(guān)于C語(yǔ)言字母轉(zhuǎn)換大小寫(xiě)的3種方法,文中給了詳細(xì)的代碼示例,需要的朋友可以參考下
    2023-10-10
  • C++ 三種繼承方式及好處示例詳解

    C++ 三種繼承方式及好處示例詳解

    這篇文章主要為大家介紹了C++ 三種繼承方式及好處示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • C語(yǔ)言 遞歸解決青蛙跳臺(tái)階問(wèn)題

    C語(yǔ)言 遞歸解決青蛙跳臺(tái)階問(wèn)題

    遞歸做為一種算法在程序設(shè)計(jì)語(yǔ)言中廣泛應(yīng)用?;竞x&#8203;是指函數(shù)/過(guò)程/子程序在運(yùn)行過(guò)程序中直接或間接調(diào)用自身而產(chǎn)生的重入現(xiàn)象。在計(jì)算機(jī)編程里,遞歸指的是一個(gè)過(guò)程:函數(shù)不斷引用自身,直到引用的對(duì)象已知
    2021-11-11
  • QT實(shí)現(xiàn)串口通信的完整步驟

    QT實(shí)現(xiàn)串口通信的完整步驟

    如果用qt寫(xiě)程序作為上位機(jī),然后通過(guò)和usb和下位機(jī)通信的時(shí)候,就需要用到qt中的串口通信了,下面這篇文章主要給大家介紹了關(guān)于QT實(shí)現(xiàn)串口通信的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • C語(yǔ)言?超詳細(xì)講解鏈接器

    C語(yǔ)言?超詳細(xì)講解鏈接器

    在C語(yǔ)言中,一個(gè)重要的思想就是分別編譯,即若干個(gè)源程序能夠在不一樣的時(shí)候單獨(dú)進(jìn)行編譯,而后在恰當(dāng)?shù)臅r(shí)候整合到一塊兒??墒擎溄悠魍ǔJ桥cC編譯器分離的,鏈接器如何作到把若干個(gè)C源程序合并成一個(gè)總體呢,我們一起來(lái)看看
    2022-03-03
  • C語(yǔ)言結(jié)構(gòu)體計(jì)算內(nèi)存占用問(wèn)題解析

    C語(yǔ)言結(jié)構(gòu)體計(jì)算內(nèi)存占用問(wèn)題解析

    這篇文章主要介紹了C語(yǔ)言結(jié)構(gòu)體計(jì)算內(nèi)存占用問(wèn)題解析,本文通過(guò)案例來(lái)解析了C語(yǔ)言計(jì)算結(jié)構(gòu)體內(nèi)存的方式和方法,需要的朋友可以參考下
    2021-07-07
  • C++簡(jiǎn)單實(shí)現(xiàn)的全排列算法示例

    C++簡(jiǎn)單實(shí)現(xiàn)的全排列算法示例

    這篇文章主要介紹了C++簡(jiǎn)單實(shí)現(xiàn)的全排列算法,結(jié)合實(shí)例形式分析了C++排序操作的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07
  • Lambda表達(dá)式里面修改外部變量問(wèn)題

    Lambda表達(dá)式里面修改外部變量問(wèn)題

    這篇文章主要介紹了Lambda表達(dá)式里面修改外部變量的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Qt自定義控件實(shí)現(xiàn)多彩色儀表盤(pán)

    Qt自定義控件實(shí)現(xiàn)多彩色儀表盤(pán)

    這篇文章主要為大家詳細(xì)介紹了Qt自定義控件實(shí)現(xiàn)多彩色儀表盤(pán),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12

最新評(píng)論