C語言標準I O fread fwrite

2021-12-29 16:30:22 字數 1654 閱讀 7860

好久不用,對c語言檔案操作都有點生疏了,由於工作需要,稍稍的複習一下;

下面的程式用c語言的fread/fwrite來讀取hex檔案,並且拷貝,目的是拷貝後的檔案需要和原始檔不能有任何差異;

// hex.cpp : defines the entry point for the console application.

//#include "stdafx.h"

#include

#define size 512

int main(int argc, char* ar**)

{ int i = 0;

int cnt = 0;

int nret = 0;

char buf[size];

file *fpr = null;

file *fpw = null;

if( (fpr=fopen("d:\\led.hex", "r")) == null )

fprintf(stderr, "open led.hex error");

if( (fpw=fopen("d:\\test.hex", "w")) == null )

fprintf(stderr, "open test.hex error");

while( (nret=fread(buf, 1, sizeof(buf), fpr)) != 0 )

{ for(i=0; i

fread(addr, size, num, fp); //size代表每次讀取的位元組數,num代表需要讀取幾塊size這樣的資料;

成功返回讀取到的位元組數,失敗返回-1,讀取到達檔案末尾返回0;

實驗發現,只要每次讀乙個位元組,不管你buf的緩衝型別是什麼,都是可以讀取成功的,基本不會出現什麼問題,這個東西熟悉c語言的應該都已經知道了,獻醜了,下面的程式用來對比,nret用來接收fread讀到的位元組數:

// hex.cpp : defines the entry point for the console application.

//#include "stdafx.h"

#include

#include

#define size 256

int main(int argc, char* ar**)

{ int i = 0;

int cnt = 0;

int nret = 0;

int flag = 1;

short buf[size];

file *fpr = null;

file *fpw = null;

if( (fpr=fopen("d:\\led.hex", "r")) == null )

fprintf(stderr, "open led.hex error");

if( (fpw=fopen("d:\\test.hex", "w")) == null )

fprintf(stderr, "open test.hex error");

while( (nret=fread(buf, 1, sizeof(buf), fpr)) != 0 )

{ if(flag == 1)

{ for(i=0; i注意,兩種方式列印的格式不一樣,因為第乙個是char型別,第二個是short型別,但這裡主要是驗證檔案是完好的,就不考慮這些了;

C語言標準

寫在前面 k r c不用說。個人以為,我們平常說的標準c,指的是ansi c,iso c,c89,c90。k r c ansi c和iso c c 的第乙個標準是由ansi發布的。雖然這份文件後來被國際標準化組織 iso 採納並且iso發布的修訂版也被ansi採納了,但名稱ansi c 而不是 is...

C語言標準

c語言標準 寫在前面 k r c不用說。個人以為,我們平常說的標準c,指的是ansi c,iso c,c89,c90。k r c 1978年,丹尼斯 里奇 dennis ritchie 和布萊恩 柯林漢 brian kernighan 合作出版了 c程式語言 的第一版。書中介紹的c語言標準也被c語言...

標準C語言

1 檔案相關 建立檔案 touch 檔名 原本是用來修改檔案屬性的,但如果檔案不存在 會自動把檔案建立出來。刪除檔案 rm 檔名 此命令刪除時不經過 站,檔案恢復困難。複製檔案 cp 原始檔 目標位置 在複製過程中可以修改檔名。移植檔案 mv 原始檔 目標位置 用法與cp基本一致,區別是cp原始檔還...