1. 程式人生 > >fopen、fwrite、fread 函式——讀寫結構體型別資料詳解

fopen、fwrite、fread 函式——讀寫結構體型別資料詳解

問題引入

幾個概念需要了解

  • 檔案讀寫過程:開啟、讀、寫、關閉
  • 結構體型別,也是一種型別,用簡單資料型別的思維去考慮複雜型別

fopen()函式
函式原型:
FILE *fopen(const char *path, const char *mode)
使用注意:需要判斷產生的檔案指標是不是空指標

fwrite()函式
函式原型:
size_t fwrite(const void * ptr, size_t size, size_t nmemb, FILE * stream);

函式說明:fwrite()用來將資料寫入檔案流中. 引數stream 為已開啟的檔案指標, 引數ptr 指向欲寫入的資料地址, 總共寫入的字元數以引數size*nmemb 來決定. Fwrite()會返回實際寫入的nmemb 數目.

使用注意:prt指標當前指向的位置

fread()函式
函式原型:
size_t fread(void * ptr, size_t size, size_t nmemb, FILE * stream);

例項解析

//寫入兩個學生資料到結構體stua
//存入到結構體stub並讀出

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#define N  5
#define SIZE (sizeof(struct stu))
#define PATH "demo.txt"

typedef
struct stu{ char name[N]; int age; }STU; int main (void) { STU stua[2], stub[2],*pa=stua, *pb=stub; printf("Write File:\n"); for (int i=0; i<2; i++, pa++) { scanf("\t%s%d", pa->name, &pa->age); } FILE *fp; if ( (fp=fopen(PATH, "wb+")) == NULL ) { printf
("Cannot open file\n"); getch(); exit(1); } pa = stua; fwrite(pa, SIZE, 2, fp); rewind(fp); fread(pb, SIZE, 2, fp); printf("\nRead File:\n"); for (int j=0; j<2; j++, pb++) { printf("\t%5s %2d\n", pb->name, pb->age); } fclose(fp); return 0; }

這裡寫圖片描述

相關推薦

fopenfwritefread 函式——結構體型資料

問題引入 幾個概念需要了解 檔案讀寫過程:開啟、讀、寫、關閉 結構體型別,也是一種型別,用簡單資料型別的思維去考慮複雜型別 fopen()函式 函式原型: FILE *fopen(const char *path, const char *mode

記憶體分割槽字串逆置函式發生訪問衝入的原因

題目:將一個字串逆置輸出 我下寫的程式碼如下: void reserve_string(char *string) {        char tmp;//變數tmp用來做交換        char *first_str = string;//字串的首指標   

C++通過jsoncpp類庫JSON檔案-json用法

介紹: JSON 是常用的資料的一種格式,各個語言或多或少都會用的JSON格式。 JSON是一個輕量級的資料定義格式,比起XML易學易用,而擴充套件功能不比XML差多少,用之進行資料交換是一個很好的選擇。JSON的全稱為:JavaScript Object Notation ,顧名思義,JSON是用於標記

MySQL分離和多例項

mysql讀寫分離的優缺點 資料庫讀寫分離的好處: – 減輕單臺伺服器的壓力,增加併發量,提高了硬體利用率 資料庫讀寫分離的缺點: – 單點故障 – 當訪問量大時,排程器的效能會成為瓶錦 讀寫分離環境: 51為主 52為從 57為排程器 1 部署Mysql主從同步結構,一主一從

STM32利用SPISD卡的程式

SD卡的讀寫驅動程式是運用FATFS的基礎,學了FATFS就可以在SD卡上建立資料夾及檔案了。我們先從main檔案瞭解一下程式的執行流程int main(void) { u16 i; USART1_Config(); for(i=0;i<1536;i++) send_data[

(read&write)視訊(video) 及 程式碼

讀取(read&write)視訊(video) 詳解 及 程式碼本文地址: http://blog.csdn.net/caroline_wendy/article/details/1708439

解析用PHP音訊檔案資訊的(支援WMA和MP3)

<?php // AudioExif.class.php // 用PHP進行音訊檔案頭部資訊的讀取與寫入 // 目前只支援 WMA 和 MP3 兩種格式, 只支援常用的幾個頭部資訊 // // 寫入資訊支援: Title(名稱), Artist(藝術家), Copyright(版權), Descri

結構體型資料作為函式引數(三種方法

(1)用結構體變數名作為引數。 複製程式碼程式碼如下: #include<iostream> #include<string> using namespace std; struct Student{  string name;  int score;  }; int mai

fopen , fread fwrite 函式二進位制檔案 問題總結

最近在解析 png 資料檔案, 發現一個檔案操作中容易忽略的問題,問題描述如下: 在使用 fread 讀二進位制檔案(png 圖片)的時候, 發現讀取到記憶體中的資料和 二進位制檔案中的資料不一致, 同樣, 在 使用 fwrite 寫二進位制檔案(png 圖片)的時候,

fopenfclosefeoffputcfgetcfreadfwriteftellfseekfscanf函式的用法

轉自:http://zhidao.baidu.com/question/212943472.html clearerr(清除檔案流的錯誤旗標) 相關函式 feof表頭檔案 #include<stdio.h>定義函式 void clearerr(FILE *

fopen()fwrite()fread()函數使用說明與示例

copyto turn 轉換 buffer data sig save 個數 讀數 fopen()函數: 1.作用: 在C語言中fopen()函數用於打開指定路徑的文件,獲取指向該文件的指針。 2.函數原型: [cpp] view plain copy F

Linux C---檔案操作(fopenfwritefread等)的許可權問題

C語言中對檔案進行操作必須開啟檔案,開啟檔案主要涉及到fopen函式。 fopen函式的原型為: FILE* fopen(const char *path,const char *mode) 其中path為檔案路徑,mode為開啟方式1)對於檔案路徑,只需注意若未明確給出絕對路徑,則

Linux標準IO庫(fopenfreadfwritefprintffscanf等)

Linux標準IO庫介面定義在stdio.h標頭檔案中,它的使用與底層檔案描述符類似,需要先開啟一個檔案來建立一個訪問路徑,此操作的返回值將作為其他IO庫函式的引數。 在標準IO庫中,與底層檔案描述符對應的是流(stream),它被實現為指向結構FILE的指標。 常用的標準I/O庫函

open()fwrite()fread()函數使用說明與示例

二進制文件 如果 否則 include size_t byte fwrite 註意 錯誤 fopen()函數: 1.作用: 在C語言中fopen()函數用於打開指定路徑的文件,獲取指向該文件的指針。 2.函數原型: FILE * fopen(const char * pat

50mysql基於mysql-proxy分離實戰

一、主從配置 192.168.130.61 master 192.168.130.62 slave 192.168.130.63 proxy master配置 [mysqld] socket=/tmp/mysql.sock basedir=/usr/local/mysql datadi

三十一索引的弊端之分離的引入

                   索引的弊端之讀寫分離的引入 索引=列值+rowid 索引

安裝Centos7 Mysql8 叢集,實現分離 高可用(三)-- 主從設定

零、寫在前面    為了嘗試新技術和業務需要,因此打算搞一套這樣的環境玩兒一下    作業系統及資料庫的安裝請見前兩篇一、理論依據    不再贅述我的硬體規劃等細節    這次僅用到兩臺虛擬機器,一主一

安裝Centos7 Mysql8 叢集,實現分離 高可用(四)-- MyCat分離

零、說在前面    先吐個槽,這點東西折騰了我四五天,最後還是一條告警拯救了我,下面進入正文    看了幾個MySQL的讀寫分離的中介軟體,貌似這個是比較流行的一個,雖然我不是BAT的粉絲,但是有好用的

windows 下 MySQL分離主從複製通過amoeba代理實現分離 配置全過程

配置環境: 1.mysql5.6 2.windowsXP 主從複製配置 主伺服器配置 配置my.ini檔案 查詢my.ini地址 my.ini檔案在MySQL Server 5.6目錄下 我的my.ini路徑: C:\Documents and Settings\All

MySQL/InnoDB中的鎖悲觀鎖共享鎖排它鎖行鎖表鎖死鎖與MySQL分離

MySQL/InnoDB的加鎖,一直是一個面試中常問的話題。例如,資料庫如果有高併發請求,如何保證資料完整性?產生死鎖問題如何排查並解決?我在工作過程中,也會經常用到,樂觀鎖,排它鎖,等。於是今天就對這幾個概念進行學習,屢屢思路,記錄一下。 注:MySQL是一個支援