C語言——文件操作

歸納編程學習的感悟,
記錄奮斗路上的點滴,
希望能幫到一樣刻苦的你!
如有不足歡迎指正!
共同學習交流!
🌎歡迎各位→點贊 👍+ 收藏? + 留言?📝

我輩皆凡人,用一生鋪就的,走到終點也不過是平凡之路。

但只要不忘初心,砥礪前行,再渺小的無名之輩,亦有華彩。

?一起加油!?

?

目錄

💦前言:

💦文件的基本的概念:

💦文件類型和常用函數:?

💦文件的打開與關閉?:

💦簡單文件操作的例子 :


💦前言:

? ? ? ??如果你在計算機上調試過 C 語言程序,一定有保存程序的概念。保存程序就是將編輯好的 C語言程序以文件的形式存儲在計算機的外存儲器上,比如存儲在磁盤上,形成源程序文件。對源程序進行編譯、鏈接后會產生目標文件(.obj)可執行文件(.exe)
????????在前面的程序中,程序處理的數據往往需要從鍵盤輸入,程序處理的結果總是輸出到顯示器上。在程序調試過程中,每運行一次程序就要輸入一次數據,如果輸入數據較多,則是一件相當麻煩的事情,也容易出錯。為了使數據可重復、永久使用,可將程序處理的數據存放在文件中,需要時將文件中的數據讀入內存,供程序處理。同樣,程序的處理結果也可以保存在文件中,供其他程序使用或顯示輸出。事實上,計算機處理的諸如數字、文字、圖形、聲音、圖像、視頻等大量的數據都是存儲在文件中的。

💦文件的基本的概念:

????????文件是信息的集合。在 C 語言中,包括磁盤文件設備文件。磁盤文件是存儲在磁盤上的信息的集合,而所有能進行輸入/輸出的終端設備都被視為設備文件。如鍵盤是標準輸入文件顯示器是標準輸出文件。如果文件中存儲的是程序,這樣的文件稱為程序文件;如果文件中存儲的是供程序處理的數據,則稱為數據文件。C 語言把文件視為一個字節(字符)序列,即文件是由字節(字符)組成的序列,允許以字節(字符)為單位進行讀/寫。就好像在程序和文件或設備之間有字節流在流動,所以將這種組織形式和存取方式的文件形象地稱為流式文件

????????根據數據的組織形式,可以把文件分為兩類: 文本文件二進制文件。文本文件中的每個字節存放一個 ASCII碼代表一個字符。二進制文件中的數據以數據在內存中的形式存放。?

????????文本文件中的一個字節對應一個字符,便于對字符逐個處理,也便于輸出字符;但一般要占用較多的磁盤空間,而且在讀入內存或寫入文件時要進行格式轉換,需要轉換時間。二進制文件中的數據格式與數據在內存的存儲形式相同占用較少的磁盤空間,讀入內存或寫入文件時也不進行格式轉換,數據的輸入/輸出速度較快
????????對流式文件的處理方式有兩種,緩沖文件系統非緩沖文件系統。所謂緩沖文件系統是指系統自動地為每個正在使用的文件開辟一個緩沖區(內存的某個特定區域); 如果從內存向磁盤寫數據,數據先寫入緩沖區中,當緩沖區寫滿之后或文件關閉時,才把緩沖區的內容一次全部寫入磁盤文件;如果從磁盤讀數據到內存,系統先一次性從磁盤文件讀入一批數據送入內存緩沖區,然后再從緩沖區取數據供程序處理。非緩沖文件系統不會為使用的文件自動建立緩沖區,程序需為每個文件設定緩沖區。
????????在傳統的 UNIX 系統中,用緩沖文件系統處理文本文件,而用非緩沖文件系統處理二進制文件。由于這兩種文件系統中有許多功能是重疊的,因此 ANSI C 標準建議只保留緩沖文件系統,并擴展了它的功能。這樣在 ANSI C 中,緩沖文件既用于處理文本文件,又用于處理二進制文件。

💦文件類型和常用函數:?

????????C 語言中沒有輸入/輸出語句,對文件的所有操作都是用庫函數實現的。下面是與文件操作有關的類型定義和常用函數的原型,這些內容可參考頭文件 stdio.h。

????????文件類型定義

文件操作函數原型?

💦文件的打開與關閉?:

????????對文件操作的步驟一般有三步: 1.打開文件;2.對文件進行讀/寫:3關閉文件所謂打開文件,就是建立程序和文件之間的通信通道并為文件操作建立緩沖區。語言程序通過文件類型指針與文件建立聯系,程序中的一個文件類型指針就代表一個文件文件打開后,就可以使用庫函數對文件進行讀/寫操作了。程序結束或不再繼續使用文件時要關閉文件關閉文件的目的是要釋放相關的資源,如緩沖區

💦簡單文件操作的例子 :

????????題目1顯示:在 C盤根目錄下建立一個名為 abc.txt 的文本文件,從鍵盤輸入一些字符寫入該文件中,直到輸入一個^Z(Ctrl+Z)為止(^Z 是鍵盤輸入的文件結束標志)。

#include<stdio.h>
#include<stdlib.h>
int main(){char ch;FILE *fp;//定義文件類型指針if((fp=fopen("abc.txt","w"))==NULL){//以寫方式打開文本文件 printf("Can not open file\n");exit(1);} ch=getchar();while(ch!=EOF){//不是ctrl+c就循環 fputc(ch,fp);//寫字符到文件 ch=getchar();//從鍵盤讀入下一個字符 }fclose(fp);//關閉文件 
} 

????????程序中的語句“ch=getchar ();”還可寫成“ch-fgetc(stdin);”,其作用是從標準輸入設備(鍵盤)讀入一個字符。?

運行

????????題目2: 顯示題目1中建立文件abc.txt中的內容

#include<stdio.h>
#include<stdlib.h>
int main(){char ch;FILE *fp;//定義文件類型指針 if((fp=fopen("abc.txt","r"))==NULL){//以讀方式打開文本文件 printf("Can not open file\n");exit(1);}	ch=fgetc(fp);//從文件中讀入一個字符 while(ch!=EOF){//不是文件尾則循環 putchar(ch);//顯示字符 ch=fgetc(fp);//從文件讀入下一個字符 }fclose(fp);//關閉文件 
} 

運行?

???????????最后,希望本篇文章對你有所幫助,也希望可以支持支持博主,后續博主也會定期更新學習記錄,記錄學習過程中的點點滴滴。若這篇文章中有哪些不正確的內容,歡迎大家在評論區和我交流討論!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164984.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164984.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164984.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++的new / delete 與 C語言的malloc/realloc/calloc / free 的講解

在C語言中我們通常會使用malloc/realloc/calloc來動態開辟的空間&#xff0c;malloc是只會開辟你提供的空間大小&#xff0c;并不會初始化內容&#xff1b;calloc不但會開辟空間&#xff0c;還會初始化&#xff1b;realloc是專門來擴容的&#xff0c;當你第一次開辟的空間不夠用…

目標檢測YOLO實戰應用案例100講-基于YOLO的小目標檢測改進算法(續)

目錄 3.3基于混合注意力的多尺度特征融合改進方法 3.3.1整體網絡架構 3.3.2特征金字塔的構建

Vue 2.0源碼分析-實例掛載的實現

Vue 中我們是通過 $mount 實例方法去掛載 vm 的&#xff0c;$mount 方法在多個文件中都有定義&#xff0c;如 src/platform/web/entry-runtime-with-compiler.js、src/platform/web/runtime/index.js、src/platform/weex/runtime/index.js。因為 $mount 這個方法的實現是和平臺…

Python 使用tkinter復刻Windows記事本UI和菜單功能(三)

上一篇&#xff1a;Python 使用tkinter復刻Windows記事本UI和菜單功能&#xff08;二&#xff09;-CSDN博客 下一篇&#xff1a;敬請耐心等待&#xff0c;如發現BUG以及建議&#xff0c;請在評論區發表&#xff0c;謝謝&#xff01; 本文章完成了記事本的新建、保存、另存、打…

【技巧】前端開發技巧 增加前端的請求緩存 提高開發效率

定義變量 /*** 開發緩存 開關* 說明* 方便開發使用 提升開發效率* true 打開緩存* false 關閉緩存 這里上線的時候必須改為* type {boolean}*/ const cacheFlag true/*** 排除某個url 方便開發時的數據實時生效* 這里根據開發到哪個功能 實時變更&#xff0c; 比如開…

京東數據分析(京東大數據):2023年10月京東手機行業品牌銷售排行榜

鯨參謀監測的京東平臺10月份手機市場銷售數據已出爐&#xff01; 根據鯨參謀平臺的數據顯示&#xff0c;今年10月份&#xff0c;京東平臺手機行業的銷量約340萬&#xff0c;環比增長約11%&#xff0c;同比則下滑約2%&#xff1b;銷售額為108億&#xff0c;環比增長約17%&#x…

請你說一下Vue中v-if和v-for的優先級誰更高

v-if 與 v-for簡介 v-ifv-forv-if & v-for使用 v-if 與 v-for優先級比較 vue2 中&#xff0c;v-for的優先級高于v-if 例子進行分析 vue3 v-if 具有比 v-for 更高的優先級 例子進行分析 總結 在vue2中&#xff0c;v-for的優先級高于v-if在vue3中&#xff0c;v-if的優先級高…

RubyMine 2023:提升Rails/Ruby開發效率的強大利器

在Rails/Ruby開發領域&#xff0c;JetBrains RubyMine一直以其強大的功能和優秀的性能而備受開發者的青睞。現如今&#xff0c;我們迎來了全新的RubyMine 2023版本&#xff0c;它將為開發者們帶來更高效的開發體驗和無可比擬的工具支持。 首先&#xff0c;RubyMine 2023提供了…

Java-使用poi-tl根據word模板動態生成word

作者wangsz&#xff0c;想寫一些關于word的工具&#xff0c;所以就寫了這篇文章 1.首先&#xff0c;先導入所需要的依賴&#xff08;poi相關依賴即可&#xff09; <!-- POI --><dependency><groupId>org.apache.poi</groupId><artifactId>poi&l…

【libGDX】使用Mesh繪制立方體

1 前言 本文主要介紹使用 Mesh 繪制立方體&#xff0c;讀者如果對 Mesh 不太熟悉&#xff0c;請回顧以下內容&#xff1a; 使用Mesh繪制三角形使用Mesh繪制矩形使用Mesh繪制圓形 在繪制立方體的過程中&#xff0c;主要用到了 MVP &#xff08;Model View Projection&#xff0…

目標檢測YOLO系列從入門到精通技術詳解100篇-【目標檢測】計算機視覺(最終篇)

目錄 知識儲備 KITTI數據集 1.KITTI數據集概述 2.數據采集平臺 3.Dataset詳述 算法原理

GIT無效的源路徑/URL

ssh-add /Users/haijunyan/.ssh/id_rsa ssh-add -K /Users/haijunyan/.ssh/id_rsa

windows11上enable WSL

Windows電腦上要配置linux&#xff08;這里指ubuntu&#xff09;開發環境&#xff0c;主要有三種方式&#xff1a; 1&#xff09;在windows上裝個虛擬機&#xff08;比如vmware&#xff09;。缺點是vmware加載ubuntu后系統會變慢很多&#xff0c;而且需要通過samba來實現window…

git clone -mirror 和 git clone 的區別

目錄 前言兩則區別git clone --mirrorgit clone 獲取到的文件有什么不同瘦身倉庫如何選擇結語開源項目 前言 Git是一款強大的版本控制系統&#xff0c;通過Git可以方便地管理代碼的版本和協作開發。在使用Git時&#xff0c;常見的操作之一就是通過git clone命令將遠程倉庫克隆…

【vue2】axios請求與axios攔截器的使用詳解

&#x1f973;博 主&#xff1a;初映CY的前說(前端領域) &#x1f31e;個人信條&#xff1a;想要變成得到&#xff0c;中間還有做到&#xff01; &#x1f918;本文核心&#xff1a;當我們在路由跳轉前與后我們可實現觸發的操作 【前言】ajax是一種在javaScript代碼中發請…

低代碼開發與IT開發的區別

目錄 一、含義不同 二、開發門檻不同 三、兩者之間的區別 1、從技術特征來看 2、從目標開發者來看 四、低代碼平臺使用感受&#xff1f; &#xff08;1&#xff09;自定義模塊&#xff0c;滿足不同的業務需求 &#xff08;2&#xff09;工作流引擎&#xff0c;簡化復雜流程的管…

機器學習實戰-第4章 基于概率論的分類方法: 樸素貝葉斯

樸素貝葉斯 概述 貝葉斯分類是一類分類算法的總稱,這類算法均以貝葉斯定理為基礎,故統稱為貝葉斯分類。本章首先介紹貝葉斯分類算法的基礎——貝葉斯定理。最后,我們通過實例來討論貝葉斯分類的中最簡單的一種: 樸素貝葉斯分類。 貝葉斯理論 & 條件概率 貝葉斯理論 …

linux網絡之網絡層與數據鏈路層

文章目錄 一、網絡層 1.IP協議 2.IP協議頭格式 3.網段劃分 4.特殊ip地址 5.IP地址的數量限制 6.私有ip和公網IP 7.路由 二、數據鏈路層 1.以太網 2.以太網幀格式 3.MAC地址 4.對比理解MAC地址和IP地址 5.MTU 6.ARP協議 ARP協議的工作流程 ARP數據報的格式 7.DNS 8.ICMP協議 9.N…

839 - Not so Mobile (UVA)

題目鏈接如下&#xff1a; Online Judge 這道題劉汝佳的解法極其簡潔&#xff0c;用了20來行就解決了問題。膜拜…… 他的解法如下&#xff1a;天平&#xff08;UVa839紫書p157&#xff09;_天平 uva 839_falldeep的博客-CSDN博客 我寫了兩個&#xff08;都很冗長&#xff…

淺談電氣設備的絕緣在線監測與狀態維修探究

賈麗麗 安科瑞電氣股份有限公司 上海嘉定 201801 摘要&#xff1a;在線監測是控制好電氣設備絕緣的重要方式&#xff0c;為電力系統穩定奠定重要基礎。在線監測電氣設備時&#xff0c;要利用檢測技術促進電力系統運行效率提升&#xff0c;讓電氣設備在具體工作過程中發揮更大作…