【C語言】熟悉文件基礎知識

歡迎關注個人主頁:逸狼


創造不易,可以點點贊嗎~

如有錯誤,歡迎指出~


文件

為了數據持久化保存,使用文件,否則數據存儲在內存中,程序退出,內存回收,數據就會丟失。

程序設計中,文件分兩種:程序文件、數據文件

文件名

唯一的文件標識,包含3部分:文件路徑+文件名主干+文件后綴? (例:c:\code\test.txt? )

文本文件和二進制文件

文本文件是數據以ASCII字符的形式存儲的文件

二進制文件是數據在內存中以二進制的形式存儲的文件

字符?律以ASCII形式存儲數值型數據既可以?ASCII形式存儲,也可以使??進制形式存儲。

如有整數10000,如果以ASCII碼的形式輸出到磁盤,則磁盤中占?5個字節(每個字符?個字節),? ?進制形式輸出,則在磁盤上只占4個字節

測試代碼

#include<stdio.h>
int main()
{int a = 10000;                  FILE* pf = fopen("test.txt", "wb");fwrite(&a, 4, 1, pf);//以二進制的形式寫入文件fclose(pf);pf = NULL;return 0;
}

我們程序的數據需要輸出到各種外部設備,也需要從外部設備獲取數據,不同的外部設備的輸?輸出操作各不相同,為了?便程序員對各種設備進??便的操作,我們抽象出了流的概念,我們可以把流想象成流淌著字符的河。
C程序針對?件、畫?、鍵盤等的數據輸?輸出操作都是通過流操作的。
?般情況下,我們要想向流?寫數據,或者從流中讀取數據,都是要打開流,然后操作。

標準流

C語?程序在啟動的時候,默認打開了3個流:

  • stdin 標準輸?流,在?多數的環境中從鍵盤輸?,scanf函數就是從標準輸?流中讀取數據。
  • stdout 標準輸出流,?多數的環境中輸出?顯?器界?,printf函數就是將信息輸出到標準輸出流中。
  • stderr 標準錯誤流,?多數環境中輸出到顯?器界?。

這是默認打開了這三個流,我們使?scanf、printf等函數就可以直接進?輸?輸出操作的。
stdin、stdout、stderr 三個流的類型是: FILE * ,通常稱為?件指針。
C語?中,就是通過 FILE * 的?件指針來維護流的各種操作的。

文件指針

每個被使?的?件都在內存中開辟了?個相應的?件信息區,?來存放?件的相關信息(如?件的名 字,?件狀態及?件當前的位置等)。這些信息是保存在?個結構體變量中的。該結構體類型是由系統聲明的,取名FILE.(不需要關注文件內部細節)

每當打開?個?件的時候,系統會根據?件的情況?動創建?個FILE結構的變量,并填充其中的信 息,使?者不必關?細節

文件的打開和關閉

?件在讀寫之前應該先打開?件,在使?結束之后應該關閉?件。
在編寫程序的時候,在打開?件的同時,都會返回?個FILE* 的指針變量指向該?件,建立了指針和?件的關系。
ANSIC規定使? fopen 函數來打開?件, fclose 來關閉?件。

fopen打開文件

fclose關閉文件

代碼操作

用只讀形式,沒有創建文件

絕對路徑

比如我想在桌面上創建一個文件

相對路徑

  • . 表示當前目錄
  • . . 表示上一級路徑
  • ?沒寫 . 表示默認當前路徑

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

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

相關文章

微信小程序,h5端自適應登陸方式

微信小程序端只顯示登陸(獲取opid),h5端顯示通過賬戶密碼登陸 例如: 通過下面的變量控制: const isWeixin ref(false); // #ifdef MP-WEIXIN isWeixin.value true; // #endif

Git 查看提交歷史

命令說明git log查看歷史提交記錄git blame (file)以列表形式查看指定文件的歷史修改記錄 git log 在使用 Git 提交了若干更新之后&#xff0c;又或者克隆了某個項目&#xff0c;想回顧下提交歷史&#xff0c;我們可以使用 git log 命令查看。 git log 命令用于查看 Git 倉庫中…

LIN基礎:從LIN Frame開始

目錄&#xff1a; 1、LIN的網絡拓撲 2、LIN Frame 1&#xff09;Header 2&#xff09;Response 3、LIN的通信規則 1&#xff09;LIN的發送行為示例 2&#xff09;LIN的接收行為示例 雖然LIN總線的通信速率不高&#xff0c;工程中&#xff0c;最高的速率也就19200bps。…

c語言extern關鍵字

extern 是C和C中的關鍵字&#xff0c;用于聲明一個變量或函數的存在&#xff0c;但不進行定義。 它通常用于在一個源文件中引用另一個源文件中定義的變量或函數。 例如&#xff0c;extern int x; 表示 x 是一個整數變量&#xff0c;但它的實際定義將在其他文件中。在引用它的文…

StarRocks——Stream Load 事務接口實現原理

目錄 前言 一、StarRocks 數據導入 二、StarRocks 事務寫入原理 三、InLong 實時寫入StarRocks原理 3.1 InLong概述 3.2 基本原理 3.3 詳細流程 3.3.1 任務寫入數據 3.3.2 任務保存檢查點 3.3.3 任務如何確認保存點成功 3.3.4 任務如何初始化 3.4 Exactly Once 保證…

Leetcode - 周賽386

目錄 一&#xff0c;3046. 分割數組 二&#xff0c;3047. 求交集區域內的最大正方形面積 三&#xff0c;3048. 標記所有下標的最早秒數 I 四&#xff0c;3049. 標記所有下標的最早秒數 II 一&#xff0c;3046. 分割數組 將題目給的數組nums分成兩個數組&#xff0c;且這兩個…

探索RedisJSON:將JSON數據力量帶入Redis世界

探索RedisJSON&#xff1a;將JSON數據力量帶入Redis世界 當我們談論數據存儲和查詢時&#xff0c;Redis和JSON都是無法忽視的重要角色。Redis以其高效的鍵值存儲、快速的讀/寫速度、以及豐富的數據結構贏得了開發者的喜愛。而JSON&#xff0c;作為一種輕量級的數據交換格式&am…

「Vue3系列」Vue3 條件語句/循環語句

文章目錄 一、Vue3 條件語句1. v-if2. v-else-if 和 v-else3. v-show4. 使用計算屬性進行條件渲染5. v-if與v-show比較v-ifv-show性能考慮使用場景 二、Vue3 循環語句1. 遍歷數組2. 遍歷對象3. 使用索引4. 注意事項 三、相關鏈接 一、Vue3 條件語句 在 Vue 3 中&#xff0c;你…

盲人出行:科技創造美好的未來

在繁忙的都市中&#xff0c;我每天都要面對許多挑戰&#xff0c;盲人出行安全保障一直難以得到落實。我看不見這個世界&#xff0c;只能依靠觸覺和聽覺來感知周圍的一切。然而&#xff0c;我從未放棄過對生活的熱愛和對未來的憧憬。在一次機緣巧合下&#xff0c;我認識了一款名…

C3_W2_Collaborative_RecSys_Assignment_吳恩達_中英_Pytorch

Practice lab: Collaborative Filtering Recommender Systems(實踐實驗室:協同過濾推薦系統) In this exercise, you will implement collaborative filtering to build a recommender system for movies. 在本次實驗中&#xff0c;你將實現協同過濾來構建一個電影推薦系統。 …

VLAN實驗報告

實驗要求&#xff1a; 實驗參考圖&#xff1a; 實驗過程&#xff1a; r1: [r1]int g 0/0/0.1 [r1-GigabitEthernet0/0/0.1]ip address 192.168.1.1 24 [r1-GigabitEthernet0/0/0.1]dot1q termination vid 2 [r1-GigabitEthernet0/0/0.1]arp broadcast enable [r1]int g 0/0/…

Mysql學習之MVCC解決讀寫問題

多版本并發控制 什么是MVCC MVCC &#xff08;Multiversion Concurrency Control&#xff09;多版本并發控制。顧名思義&#xff0c;MVCC是通過數據行的多個版本管理來實現數據庫的并發控制。這項技術使得在InnoDB的事務隔離級別下執行一致性讀操作有了保證。換言之&#xff0…

django的模板渲染中的【高級定制】:按數據下標id來提取數據

需求&#xff1a; 1&#xff1a;在一個頁面中顯示一張數據表的數據 2&#xff1a;不能使用遍歷的方式 3&#xff1a;頁面中的數據允許通過admin后臺來進行修改 4&#xff1a;把一張數據表的某些內容渲染到[xxx.html]頁面 5&#xff1a;如公司的新商品頁面&#xff0c;已有固定的…

《夢幻西游》本人收集的34個單機版游戲,有詳細的視頻架設教程,值得收藏

夢幻西游這款游戲&#xff0c;很多人玩&#xff0c;喜歡研究的趕快下載吧。精心收集的34個版本。不容易啊。里面有詳細的視頻架設教程&#xff0c;可以外網呢。 《夢幻西游》本人收集的34個單機版游戲&#xff0c;有詳細的視頻架設教程&#xff0c;值得收藏 下載地址&#xff1…

FDM打印機學習

以下內容摘自網絡&#xff0c;僅供學習討論&#xff0c;侵刪。 持續更新。。。 FDM打印機是通過噴頭融化絲狀耗材&#xff08;PLA&#xff0c;ABS等材料&#xff09;&#xff0c;然后逐層涂在熱床上&#xff0c;一層一層逐級抬高。 結構分類 Prusa i3型是一種龍門結構&#…

JavaWeb 下拉菜單怎么實現選擇不同的顏色?

在JavaWeb中實現下拉菜單選擇不同顏色的功能是一種常見的需求&#xff0c;可以通過HTML、CSS和JavaScript結合Java后端來實現。 第一步&#xff1a;編寫HTML頁面 首先&#xff0c;我們需要創建一個HTML頁面&#xff0c;其中包含一個下拉菜單和一個用于顯示顏色的區域。 <…

python 爬取文本內容并寫入json文件

背景: 項目需要從html 提取說明書目錄 實現: 由于html是包含所有內容,所以將其中目錄部分手動重新生成一個html 文件dir26.html python import requests from bs4 import BeautifulSoup import jsonfilename "dir26.html" # 替換為實際的文件路徑 with open(fil…

ES 備份索引

1、先創建索引 PUT file_info_sps_demo1 {"settings": {"index": {"number_of_shards": "1","blocks": {"read_only_allow_delete": "true"},"max_result_window": "500000",&quo…

階躍信號與沖擊信號

奇異信號&#xff1a;信號與系統分析中&#xff0c;經常遇到函數本身有不連續點&#xff08;跳變電&#xff09;或其導函數與積分有不連續點的情況&#xff0c;這類函數稱為奇異函數或奇異信號&#xff0c;也稱之為突變信號。以下為一些常見奇異函數。 奇異信號 單位斜變信號 …

C#雙向鏈表實現:Append()方法追加并顯示數據

目錄 一、涉及到的知識點 1.定義 2.雙向鏈表與單向鏈表的區別 二、實例 一、涉及到的知識點 1.定義 在雙向鏈表中&#xff0c;每個節點有兩個指針域&#xff0c;一個指向它的前一個節點&#xff08;即直接前驅&#xff09;&#xff0c;另一個指向它的后一個節點&#xff0…