Linux應用軟件編程-文件操作(標準io)

在Linux下一切皆文件,比如:.txt,.c,.h,.jpg,目錄,鍵盤,鼠標,顯示器、硬盤等等都是文件,即IO。文件操作的統一思想:打開文件,讀、寫文件,關閉文件。

文件的類型:

b ? ? 塊設備文件 ? ? ? 存儲設備(硬盤)

c ? ? 字符設備文件 ? ?輸入輸出設備

d ? ? 目錄文件

- ? ? ?普通文件 ? ?.c ? .h ? .txt ? .jpg ? .png ? .mp4 ? a.out ? ?============>ASCII文件 ? ? 二進制文件

l ? ? ?軟鏈接文件 ? ? ??

s ? ? 套接字文件 ? ? ?網絡通信?

p ? ? 管道文件 ? ? ? ? 進程間通信

一? 標準IO:

打開文件:fopen

讀寫文件:

fgetc ? fputc:一個字節讀寫 ? 作用:主要用來操作普通文件(ASCII文件、二進制文件)

fgets ? fputs:一行讀寫? ? ? ? ? 作用:主要用來操作普通文件中的ASCII文件,不能操作二進制文件

fwrite ?fread:按照指定大小讀寫(讀寫結構體) ?作用:主要用來操作普通文件(ASCII文件、二進制文件)

關閉文件:fclose

二? 函數接口:

1. FILE *fopen(const char *pathname, const char *mode);

功能:打開一個文件

參數:

pathname : 要打開文件的文件名

mode :打開方式:

"r" :只讀方式打開, 文件必須要存在

"r+" :讀寫方式打開,文件必須要存在

"w":以寫的方式打開,文件不存在則創建,文件存在則清空

"w+":以讀寫方式打開,文件不存在則創建,文件存在則清空

"a":打開追加寫,文件不存在則創建

"a+":以讀寫方式打開,追加寫,文件不存在則創建

返回值:成功:文件流指針FILE *;失敗: NULL

2. int fclose(FILE *stream);

功能:關閉文件流指針所對應的文件(釋放資源)

文件流:FILE-文件流結構體;FILE *-文件流指針;標準IO在每打開一個文件時,都會將一個文件和一個文件流指針相關聯。

操作系統默認打開的三個流:

stdin :標準輸入流 : 默認關聯鍵盤

stdout:標準輸出流: ?默認關聯顯示終端

stderr:標準出錯流: 默認關聯顯示終端

3. int fputc(int c, FILE *stream);

功能:向文件中寫入一個字節

參數:

c : 要寫入的數據

stream:要寫入的文件流指針

返回值:成功:返回寫入數據的整型值;失敗:EOF(-1)

4. int fgetc(FILE *stream);

功能:從文件中讀一個字符

參數:stream : 要讀的文件流指針

返回值:成功:返回督導字符的ascii;失敗:EOF,讀到文件末尾:EOF

5. int fputs(const char *s, FILE *stream);注意:此函數接口不會寫入'\0'

功能:向文件中寫入一行字符串

參數:

s : 要寫入數據的首地址

stream:寫入的文件流指針

返回值:成功: >=0;失敗 :EOF。

6. char *fgets(char *s, int size, FILE *stream);

功能:讀取一行數據到到s指向的空間,遇到'\n'停止讀

參數:

s:存儲讀取到數據的空間首地址

size :期待讀到的字節數

stream:要讀的文件流

返回值:成功:返回s的首地址;失敗:NULL,文件末尾:NULL

fputs和puts,fgets和gets的區別:

fputs與puts:puts會自動輸出一個'\n'

fgets與gets:

1. gets會將終端最后輸入的'\n'替換成'\0', fgets只是在最終讀到的字符串末尾添加'\0';

2. gets是危險的,因為沒有限制輸入數據的大小,fgets有限制;

3. fgets如果size比要讀區的數據小,最多讀取size-1個字節,最后一個字節位置存放\0;

7. size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

功能:向文件中寫入指定大小的nmemb個元素

參數:

ptr :要寫入數據的首地址

size:寫入的每個元素的大小

nmemb:要寫入的元素的個數

stream:要寫入的文件流指針

返回值:成功:實際寫入的元素個數;失敗:0?

?8. size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

功能:從文件中讀取nmemb個元素

參數:

ptr:要存放讀取到的數據的首地址

size:每個元素的大小

nmemb:期望讀到的元素的個數

stream:要度的文件流指針

返回:成功:返回實際讀到的元素個數;失敗:0,讀到達文件末尾:0

標準IO---文件定位函數:

1.?int fseek(FILE *stream, long offset, int whence);

功能:重新定位文件流位置

參數:

stream:要重新定位的文件

offset:從指定位置進行偏移的偏移量

whence:指定的位置:SEEK_SET:文件開頭,offset:正;SEEK_CUR:當前位置,offset:可正可負;SEEK_END:文件末尾,offset:可正可負

返回值:成功:0;失敗:-1

2. long ?ftell();
功能:返回流所在位置到文件開頭的偏移量

3. rewind();
功能:流復位文件的開頭

4.fprintf()

功能:將格式化后的字符串寫入到文件

5. int sprintf(char *str, const char *format, ...);

功能:將格式化后的字符串寫道str指向的內存空間,字符串的拼接,要將某種基本數據類型轉換成字符串類型

6. fscnaf();

功能:從文件中讀出格式化后的數據

7. sscanf();
功能:從內存中獲取格式化后的數據

時間的函數接口:

time();功能:獲取1970-1-1 0:0:0到現在的秒數

ctime();功能:將秒數轉換成字符串時間

localtime();功能:將秒數轉換成日歷時間

char *strtok(char *str, const char *delim);

功能:分割字符串

參數:

str :需要被分割的字符串

delim:分隔符

返回值:成功:返回分割后的字符串首地址;失敗:NULL

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

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

相關文章

【Rust自學】4.4. 引用與借用

4.4.0 寫在正文之前 這一節的內容其實就相當于C的智能指針移動語義在編譯器層面做了一些約束。Rust中引用的寫法通過編譯器的約束寫成了C中最理想、最規范的指針寫法。所以學過C的人對這一章肯定會非常熟悉。 喜歡的話別忘了點贊、收藏加關注哦(加關注即可閱讀全文…

深入解析 StarRocks 物化視圖:全方位的查詢改寫機制

小編導讀: 本文將重點介紹如何利用物化視圖進行查詢改寫。文章將全面介紹物化視圖的基本原理、關鍵特性、應用案例、使用場景、代碼細節以及主流大數據產品的物化視圖改寫能力對比。 物化視圖在 StarRocks 中扮演著至關重要的角色,它是進行數據建模和加速…

2. petalinux-build失敗

NOTE 解決因為網絡原因產生的編譯錯誤分享詳細的解決步驟 報錯的情況 因為網絡原因產生編譯錯誤 現象 找不到適合的包文件(No suitable stageing package found) 不能發現文件(Fetcher failure for URL) 解決方法 采用本地加載本地文件的方式,步驟如下 進入…

sql server msdb數據庫備份恢復

備份 BACKUP DATABASE [msdb] TO DISK ND:\liyuanshuai\test\sqlserver_bakfile\msdb20241219.bak WITH NOFORMAT, NOINIT, NAME Nlys-完整 數據庫 備份, SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS 10 GO然后刪除2個測試的job,停止 SQL Server 代理…

web實驗二

web實驗二 2024.12.19 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>青島理工大學</title>&l…

bain.js(十二):RNN神經網絡實戰教程 - 音樂樂譜生成 -人人都是作曲家~

系列文章&#xff1a; &#xff08;一&#xff09;&#xff1a;可以在瀏覽器運行的、默認GPU加速的神經網絡庫概要介紹&#xff08;二&#xff09;&#xff1a;項目集成方式詳解&#xff08;三&#xff09;&#xff1a;手把手教你配置和訓練神經網絡&#xff08;四&#xff09…

WebSocket入門與結合redis

WebSocket是什么 WebSocket 是一種用于在客戶端和服務器之間建立雙向通信的協議&#xff0c;它能實現實時、持久的連接。與傳統的 HTTP 請求響應模式不同&#xff0c;WebSocket 在建立連接后允許客戶端和服務器之間相互發送消息&#xff0c;直到連接關閉。由于 WebSocket 具有…

Hive是什么,Hive介紹

官方網站&#xff1a;Apache Hive Hive是一個基于Hadoop的數據倉庫工具&#xff0c;主要用于處理和查詢存儲在HDSF上的大規模數據?。Hive通過將結構化的數據文件映射為數據庫表&#xff0c;并提供類SQL的查詢功能&#xff0c;使得用戶可以使用SQL語句來執行復雜的?MapReduce任…

OpenHarmony和OpenVela的技術創新以及兩者對比

兩款有名的國內開源操作系統&#xff0c;OpenHarmony&#xff0c;OpenVela都非常的優秀。本文對二者的創新進行一個簡要的介紹和對比。 一、OpenHarmony OpenHarmony具有諸多有特點的技術突破和重要貢獻&#xff0c;以下是一些主要方面&#xff1a; 架構設計創新 分層架構…

Electron-Vue 開發下 dev/prod/webpack server各種路徑設置匯總

背景 在實際開發中&#xff0c;我發現團隊對于這幾個路徑的設置上是純靠猜的&#xff0c;通過一點點地嘗試來找到可行的路徑&#xff0c;這是不應該的&#xff0c;我們應該很清晰地了解這幾個概念&#xff0c;以下通過截圖和代碼進行細節講解。 npm run dev 下的路徑如何處理&…

前端-處理數據的函數

判斷數據是否為空,對象是否存在某屬性,屬性值是否為空,對大數據進行換算,對單位進行轉換. 目錄 1.格式化數據 2.判斷值是否為空(包括對象、數組、字符串、數值類型) &#xff08;1&#xff09;值是0不表示空 &#xff08;2&#xff09;值是0表示空 3. 檢查對象是否具有指定名…

基礎入門-Web應用蜜罐系統堡壘機運維API內外接口第三方拓展架構部署影響

知識點&#xff1a; 1、基礎入門-Web應用-蜜罐系統 2、基礎入門-Web應用-堡壘機運維 3、基礎入門-Web應用-內外API接口 4、基礎入門-Web應用-第三方拓展架構 一、演示案例-Web-拓展應用-蜜罐-釣魚誘使 蜜罐&#xff1a;https://hfish.net/ 測試系統&#xff1a;Ubuntu 20.04 …

Android運行低版本項目可能遇到的問題

Android運行低版本項目可能遇到的問題 低版本項目總是遇到各種問題的&#xff0c;耐心點 一、gradle-xxx.xxx.xxx.zip一直下載不下來 在gradle-wrapper.properties可以試下 distributionBaseGRADLE_USER_HOME distributionPathwrapper/dists zipStoreBaseGRADLE_USER_HOME …

springboot中Controller內文件上傳到本地以及阿里云

上傳文件的基本操作 <form action"/upload" method"post" enctype"multipart/form-data"> <h1>登錄</h1> 姓名&#xff1a;<input type"text" name"username" required><br> 年齡&#xf…

智慧城市工程:相關學點、優勢、未來發展

目錄 相關學點&#xff1a; 智慧城市的優勢 挑戰與未來發展 智慧城市工程是利用現代信息技術和數據分析手段&#xff0c;提升城市管理和服務水平&#xff0c;實現城市運行的智能化、便捷化和高效化的一種新型城市發展模式。智慧城市通過整合物聯網&#xff08;IoT&#xff0…

授權模型MAC

MAC&#xff08;Mandatory Access Control&#xff09;是一種授權模型&#xff0c;用于實現對系統資源訪問的強制控制。在MAC模型中&#xff0c;授權是基于預先定義的安全策略&#xff0c;且該策略由系統管理員來配置和管理。 在MAC模型中&#xff0c;每個用戶和每個資源都被賦…

看板工具助力餐飲與酒店行業實現數字化轉型,提升管理與運營效率

在餐飲與酒店行業&#xff0c;服務質量和客戶體驗是衡量企業成功的關鍵因素。隨著客戶需求的不斷多樣化以及市場競爭的加劇&#xff0c;傳統的管理模式逐漸難以滿足高效運營的需求。尤其在高峰期&#xff0c;如何優化內部流程、提高服務效率和響應速度&#xff0c;成為了許多餐…

2024年CCF 非專業級軟件能力認證CSP-J/S 第二輪( 提高組) 染色(color)

完整題目內容可前往下方鏈接&#xff1a; 染色&#xff08;color&#xff09;_C_嗨信奧-玩嗨信息奧林匹克競賽-少兒編程題庫學習中心https://www.hixinao.com/tiku/cpp/show-4118.html 若需更多真題&#xff0c;可前往題庫中心查找&#xff0c;題庫中心涵蓋白名單賽事真題&am…

OpenIPC開源FPV之Adaptive-Link天空端代碼解析

OpenIPC開源FPV之Adaptive-Link天空端代碼解析 1. 源由2. 框架代碼2.1 消息機制2.2 超時機制 3. 報文處理3.1 special報文3.2 普通報文 4. 工作流程4.1 Profile 競選4.2 Profile 研判4.2.1 回退策略4.2.2 保持策略 4.3 Profile 應用 5. 總結6. 參考資料7. 補充資料7.1 RSSI 和 …

labelme標簽批量轉換數據集json_to_dataset

文章目錄 labelme標簽批量轉換數據集json_to_dataset轉換原理單張圖片轉換多張圖片批量轉換bat腳本循環法 標注圖片提取標注圖片轉單通道 labelme標簽批量轉換數據集json_to_dataset 轉自labelme批量制作數據集教程。 轉換原理 在安裝了labelme的虛擬環境中有一個labelme_js…