程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> C語言標准I/O_fread/fwrite

C語言標准I/O_fread/fwrite

編輯:關於C


好久不用,對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* argv[])
{
	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* argv[])
{
	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類型,但這裡主要是驗證文件是完好的,就不考慮這些了;



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved