复制使用FREAD和fwrite二进制文件 [英] Copying binary files using fread and fwrite
本文介绍了复制使用FREAD和fwrite二进制文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用复制二进制文件时,我有一个问题 FREAD
和 FWRITE
:
环路仅运行两次(40个字节),但该文件长度是160字节
的#include<&string.h中GT;
#定义PER_READ 30
INT主要(无效)
{ 字符缓冲区[500] = {0};
FILE * CSV =的fopen(CSV.csv,RB);
FILE * csvDest =的fopen(CSVDest.csv,世行);
unsigned int类型成品= 0;
无符号整型计数器= 0;
做
{
成品= FREAD(缓冲区的sizeof(字符*),PER_READ,CSV); //从CSV阅读所有以一个字符串名称缓冲区
成品+ = PER_READ *计数器;
反++;
}而(完== PER_READ *计数器);
FWRITE(缓冲区的sizeof(字符*),成品,csvDest); //写入所有到一个文件CSVDest 系统(暂停);
返回(0);
};
解决方案
的#include<&string.h中GT;
#包括LT&;&stdio.h中GT;
#定义PER_READ 30
INT主要(无效)
{
字符缓冲区[500] = {0};
FILE * CSV =的fopen(CSV.csv,RB);
FILE * csvDest =的fopen(CSVDest.csv,世行);
unsigned int类型成品= 0;
无符号整型计数器= 0;
unsigned int类型numBlocksRead = 0;
做
{
numBlocksRead = FREAD(缓冲区的sizeof(炭),PER_READ,CSV);
成品+ = numBlocksRead * sizeof的(字符);
反++;
FWRITE(缓冲区的sizeof(炭),numBlocksRead,csvDest); }而(完== PER_READ *计数器); FCLOSE(CSV);
FCLOSE(csvDest);
系统(暂停);
返回(0);
}
I have a problem when copying binary files using fread
and fwrite
:
the loop runs only two times (40 bytes), but the file length is 160 bytes:
#include <string.h>
#define PER_READ 30
int main(void)
{
char buffer[500] = { 0 };
FILE* CSV = fopen( "CSV.csv", "rb" );
FILE* csvDest = fopen( "CSVDest.csv", "wb" );
unsigned int finished = 0;
unsigned int counter = 0;
do
{
finished = fread( buffer, sizeof( char*), PER_READ, CSV );//Read all from CSV to a string name buffer
finished += PER_READ * counter;
counter++;
} while (finished == PER_READ * counter);
fwrite( buffer, sizeof( char* ), finished, csvDest );// write all to a the file CSVDest
system( "PAUSE" );
return (0);
};
解决方案
#include <string.h>
#include <stdio.h>
#define PER_READ 30
int main( void )
{
char buffer[500] = { 0 };
FILE* CSV = fopen( "CSV.csv", "rb" );
FILE* csvDest = fopen( "CSVDest.csv", "wb" );
unsigned int finished = 0;
unsigned int counter = 0;
unsigned int numBlocksRead = 0;
do
{
numBlocksRead = fread( buffer, sizeof( char ), PER_READ, CSV );
finished += numBlocksRead*sizeof( char );
counter++;
fwrite( buffer, sizeof( char ), numBlocksRead, csvDest );
} while (finished == PER_READ * counter);
fclose( CSV );
fclose( csvDest );
system( "PAUSE" );
return (0);
}
这篇关于复制使用FREAD和fwrite二进制文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文