如何在C中读取二进制数据块直到EOF?
我试图学习二进制读取数据块,而不是逐个读取值。我成功地读取了包含N字节数据的块,但如果最后一个块不是N字节,则由于while条件,数据将丢失如何在C中读取二进制数据块直到EOF?,c,binaryfiles,fread,C,Binaryfiles,Fread,我试图学习二进制读取数据块,而不是逐个读取值。我成功地读取了包含N字节数据的块,但如果最后一个块不是N字节,则由于while条件,数据将丢失 #include<stdio.h> #include<stdlib.h> int main(){ int buffer[512]; FILE *data = fopen("new_file.bin","rb"); while( fread(&buffer,sizeof(int),51
#include<stdio.h>
#include<stdlib.h>
int main(){
int buffer[512];
FILE *data = fopen("new_file.bin","rb");
while( fread(&buffer,sizeof(int),512,data) )
{
... do something
}
return 0;
}
#包括
#包括
int main(){
int缓冲区[512];
FILE*data=fopen(“new_FILE.bin”、“rb”);
while(fread(&buffer,sizeof(int),512,data))
{
…做点什么
}
返回0;
}
例如,如果下一个块是400字节,则不会使用来自该块的数据。知道如何读取所有数据直到EOF吗?您应该读取N个1字节的块,而不是读取N个字节的块
#include<stdio.h>
#include<stdlib.h>
#define N 2048
int main(){
char buffer[N];
FILE *data = fopen("new_file.bin","rb");
size_t size_read;
while( (size_read = fread(buffer,1,N,data)) > 0 )
{
... do something
}
return 0;
}
#包括
#包括
#定义N 2048
int main(){
字符缓冲区[N];
FILE*data=fopen(“new_FILE.bin”、“rb”);
大小\u t大小\u读取;
而((size_read=fread(缓冲区,1,N,数据))>0)
{
…做点什么
}
返回0;
}
如果下一个块是400字节,fread
将读取它并返回100
(32位int
)。但您必须存储其返回值以了解读取了多少个元素,这样您就可以对它们“做点什么”。