Linux課程學習一

一.fopen與fclose函數

linux中fopen函數直接用man fopen 去查看

函數原型
FILE * fopen(constchar *path , cost char *mode)
/*
* @description : 打開一個文件
* @param ‐ path : 指定文件路徑,如:"./test.txt",也可以直接由文件名
* @param ‐ mode :指定文件的打開方式,如下圖:
* @return : 成功,返回指向該文件的文件指針; 若失敗,返回 NULL
*/
參數說明:第一個參數為欲打開文件的文件路徑及文件名,第二個參數表示對文件的打開方式
返回值:
文件打開了,返回一個指向該打開文件的指針(FILE結構);文件打開失敗,錯誤上存errorcode(錯誤代碼)。注意:在fopen操作后要進行判斷,是否文件打開,文件真正打開了才能進行后面的讀或寫操作,如有錯誤
要進行錯誤處理。

mode有以下值:
r:只讀方式打開,文件必須存在
r+:可讀寫,文件必須存在
rb+:打開二進制文件,可以讀寫
rt+:打開文本文件,可讀寫
w:只寫,文件存在則文件長度清0,文件不存在則建立該文件
w+:可讀寫,文件存在則文件長度清0,文件不存在則建立該文件
a:附加方式打開只寫,不存在建立該文件,存在寫入的數據加到文件尾,EOF符保留
a+:附加方式打開可讀寫,不存在建立該文件,存在寫入的數據加到文件尾,EOF符不保留
wb:打開二進制文件,只寫 wb+:打開或建立二進制文件,可讀寫
wt+:打開或建立文本文件,可讀寫
at+:打開文本文件,可讀寫,寫的數據加在文本末尾

ab+:打開二進制文件,可讀寫,寫的數據加在文件末尾
由mode字符可知,上述如r、w、a在其后都可以加一個b,表示以二進制形式打開文件

二.fread與fwrite函數

fread函數:從文件中讀取數據到指定的地址中

函數原型
size_t fread(void*buff , size_t size, size_t count , FILE* stream)
/*
* @description :對已打開的流進行數據讀取
* @param ‐ ptr :指向 數據塊的指針
* @param ‐ size :指定讀取的每個數據項的字節數(一次讀多少字節)
* @param ‐ nmemb : 指定要讀取的數據項的個數(一次讀多少次)
* @param ‐ stream :要讀取的文件流
* @return : 返回實際讀取數據項的個數;
*/
參數:
第一個參數為接收數據的指針(buff),也即數據存儲的地址
第二個參數為單個元素的大小,即由指針寫入地址的數據大小,注意單位是字節
第三個參數為元素個數,即要讀取的數據大小為size的元素個素
第四個參數為提供數據的文件指針,該指針指向文件內部數據
返回值:讀取的總數據元素個數列如
int num,count;
int* pr=new int[num*count];
fread(pr, num*4, count, stream); //stream為fopen中返回的FILE指針要將數據寫入pr中,必須為pr分配內存,一個int為4個字節,所以要x4int fread(void *buffer,intsize,intcount,FILE*fp)
void *memset(void*buffer, int c, int count)
buffer:為指針或是數組
c:是賦給buffer的值
count:是buffer的長度
memset(void*buff,0,sizeof(buff)); 用來對一段內存空間全部設置為某個字符,一般用在對定義的字符串進行初
始化為‘’或‘/0’;

fwrite()──從buffer開始,一次輸出size個字節,重復count次,并將輸出的數據存放到fp所指向的文件中。buffer是要輸出數據在 內存中的起始地址(即從何處開始輸出)。
一般用于二進制文件的處理。

fread函數是把文件里的內容讀出來然后放到一個數組中,fwrite函數是寫內容到一個文件里。

模式改成可讀可寫

之前我們再mm文件中寫了123456789,之后用fread函數將其讀出來并且輸出,現在我們用fwrite函數繼續往mm文件中寫入四個字節,注意,用fread函數的時候將光標移動到了8的后面,所以寫入的數據把9覆蓋了。

三.fseek函數

接著上面的程序寫代碼,fread之后光標是在8后面的,我們現在將光標移動到離文件開頭有1距離的位置,即1之后,所以我們再次寫入的時候hello是在1之后,將其他內容覆蓋了

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

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

相關文章

【區塊鏈安全 | 第十篇】智能合約概述

部分內容與前文互補。 文章目錄 一個簡單的智能合約子貨幣(Subcurrency)示例區塊鏈基礎交易區塊預編譯合約 一個簡單的智能合約 我們從一個基礎示例開始,該示例用于設置變量的值,并允許其他合約訪問它。 // SPDX-License-Identi…

XML標簽格式轉換為YOLO TXT格式

針對的是多邊形&#xff08;<polygon>&#xff09;來描述對象的邊界&#xff0c;而不是傳統的矩形框&#xff08;<bndbox>&#xff09; import xml.etree.ElementTree as ET import os from pathlib import Path# 解析VOC格式的XML文件&#xff0c;提取目標框的標…

大唐杯02 DTM.PX4.016

01 5G關鍵技術概述 回傳壓力大&#xff1a;核心網向基站回傳壓力大 02 5G關鍵技術介紹01

CSS3學習教程,從入門到精通, CSS3 盒子模型的詳細語法知識點及案例代碼(23)

CSS3 盒子模型的詳細語法知識點及案例代碼 CSS3 盒子模型完整指南 一、盒子模型基礎 每個 HTML 元素都被視為一個矩形盒子&#xff0c;由以下部分組成&#xff1a; 內容區 (Content)內邊距 (Padding)邊框 (Border)外邊距 (Margin) 二、語法知識點詳解 1. 盒子的寬和高 sel…

《Linux運維實戰:Ubuntu 22.04修改root用戶默認名并禁止登錄》

總結&#xff1a;整理不易&#xff0c;如果對你有幫助&#xff0c;可否點贊關注一下&#xff1f; 更多詳細內容請參考&#xff1a;Linux運維實戰總結 一、背景信息 由于安全方面的考慮&#xff0c;先要求Ubuntu 22.04系統重的root用戶禁止登錄&#xff0c;并修改用戶名root為ad…

docker-compose自定義網絡,解決docker-compose網段路由沖突

問題排查 先route一波查看一下路由表 容器路由19和堡壘機路由沖突 解決方案 更改docker網段更改docker生成容器的網段 > 基本操作 docker network ls &#xff1a;查看docker網絡列表 docker network inspect <network id/name>&#xff1a;查看某個docker網絡詳情…

前端 - ts - - declare聲明類型

在使用typeScript的項目中 需要聲明屬性類型 單獨的局部屬性 可以直接在當前文件中聲明 全局屬性需要在項目根目錄下新建.d.ts文件 vite會自動識別.d.ts類型文件 在該文件中使用declare聲明類型有三種寫法 1、在某種類型的文件中聲明 2、聲明window上的屬性類型 3、全局聲明…

[Mac]利用Hexo+Github Pages搭建個人博客

由于我這臺Mac基本沒啥環境&#xff0c;因此需要從零開始配置&#xff0c;供各位參考。 注意??&#xff1a;MacBook (M4)使用/bin/zsh作為默認Shell&#xff0c;其對應的配置文件為~/.zshrc 參考文檔&#xff1a; HEXO系列教程 | 使用GitHub部署靜態博客HEXO | 小白向教程 文…

運維面試題(十一)

1.如果一個硬盤 IO 時阻塞了&#xff0c;會發生什么情況&#xff1f; 進程/線程掛起&#xff1a;發起I/O操作的進程或線程會被操作系統置為阻塞狀態&#xff08;等待狀態&#xff09;&#xff0c;直到I/O完成。CPU資源釋放&#xff1a;阻塞的線程會讓出CPU&#xff0c;操作系統…

sql2022 復制 事務級別發布后無法刪除

Cannot execute as the database principal because the principal "dbo" does not exist, this type of principal cannot be impersonated, or you do not have permission. 用SA用戶登錄執行下列語句 USE [xxxxx] GO EXEC dbo.sp_changedbowner loginame Nsa, …

合規+增效 正也科技攜智能營銷產品出席中睿論壇

正也科技作為醫藥數字化領域的標桿企業&#xff0c;受邀參展第二屆中睿醫健產業企業家年會暨第十三屆中睿醫藥新春論壇&#xff0c;本次論壇以“合力啟新程”為主題&#xff0c;吸引了800多位醫藥健康企業的董事長、總經理參與&#xff0c;并通過主論壇、分論壇、路演等形式探討…

ubuntu 安裝 postgresql

在 Ubuntu 系統中安裝 PostgreSQL 的步驟如下&#xff1a; 步驟 1&#xff1a;更新軟件包列表 sudo apt update步驟 2&#xff1a;安裝 PostgreSQL Ubuntu 默認倉庫包含 PostgreSQL&#xff0c;直接安裝&#xff1a; sudo apt install postgresql postgresql-contrib -ypost…

智能巡檢機器人:2025年企業安全運維的“數字哨兵“

文章目錄 一、2025年&#xff0c;為什么企業需要智能巡檢機器人&#xff1f;二、2025年智能巡檢機器人的六大核心價值三、2025行業落地實景1. 電網系統——"巡線鷹"集群作戰2. 化工園區——"防爆衛士"全天候守護3. 數據中心——"冷血偵探"精準運…

K8S學習之基礎五十一:k8s部署jenkins

k8s部署jenkins 創建nfs共享目錄&#xff0c; mkdir -p /data/v2 echo /data/v2 *(rw,no_root_squash) > /etc/exports exportfs -arv創建pv、pvc vi pv.yaml apiVersion: v1 kind: PersistentVolume metadata:name: jenkins-k8s-pv spec:capacity:storage: 1GiaccessMod…

Vue實現的表格多選方案支持跨頁選擇和回顯功能

以下是純Vue實現的表格多選方案&#xff08;不依賴UI庫&#xff09;&#xff0c;支持跨頁選擇和回顯功能&#xff1a; <template><div class"custom-table"><!-- 表格主體 --><table><thead><tr><th><input type"…

Oracle 19C 備份

在 Oracle 19c 中&#xff0c;備份數據庫通常使用 RMAN&#xff08;Recovery Manager&#xff09; 工具&#xff0c;它是 Oracle 提供的官方備份和恢復工具。以下是通過 RMAN 備份 Oracle 19c 數據庫的詳細步驟和命令。 一、RMAN 基本概念 RMAN 是 Oracle 的備份和恢復工具&am…

Elasticsearch:人工智能時代的公共部門數據治理

作者&#xff1a;來自 Elastic Darren Meiss 人工智能&#xff08;AI&#xff09;和生成式人工智能&#xff08;GenAI&#xff09;正在迅速改變公共部門&#xff0c;從理論探討走向實際應用。正確的數據準備、管理和治理將在 GenAI 的成功實施中發揮關鍵作用。 我們最近舉辦了…

AT24Cxx移植第三方庫到裸機中使用

簡介 MCU : STM32F103C8T6 庫: HAL庫裸機開發 EEPROM : AT24C02, 256Byte容量&#xff0c;I2C接口 電路圖 AT24C02 電路圖 電路圖引用 裸機直接讀寫 // 寫入數據到 EEPROM HAL_StatusTypeDef EEPROM_WriteByte(uint16_t MemAddress, uint8_t Data) {// 發送數據uint8_t …

算法刷題記錄——LeetCode篇(1.3) [第21~30題](持續更新)

更新時間&#xff1a;2025-03-29 LeetCode題解專欄&#xff1a;實戰算法解題 (專欄)技術博客總目錄&#xff1a;計算機技術系列目錄頁 優先整理熱門100及面試150&#xff0c;不定期持續更新&#xff0c;歡迎關注&#xff01; 21. 合并兩個有序鏈表 將兩個升序鏈表合并為一個…

常用數據庫

模式的定義于刪除 1.定義模式 CREATE SCHEMA [ <模式名> ] AUTHORIZATION < 用戶名 >;要創建模式&#xff0c;調用該命令的用戶必須擁有數據庫管理員權限&#xff0c;或者獲得了DBA授權 eg:為用戶WANG定義一個模式S-C-SC CREATE SCHEMA "S-C-SC" AUT…