我正在尝试理解如何在C中读取和写入。这会将二进制文件中的条目存储到缓冲区中,直到文件结束。
unsigned char *buffer = (char*) malloc (sizeof(char) * SIZE);
FILE *file = fopen(FILEPATH, "rb");
if(file == NULL){
//error
} else {
while(!feof(file)){
fread(&buffer, SIZE*sizeof(char), 1, file);
// Print out buffer (should be different everytime assume I have different numbers in the file)
}
}
或者我必须在某处使用fseek吗?
反之亦然,在文档中写一些东西会有用吗?感谢
unsigned char *buffer = (char*) malloc (sizeof(char) * SIZE);
FILE *file = fopen(FILEPATH, "wb");
for(int i=0; i<SIZE; i++){
// put something into buffer based on i
fwrite(&buffer, SIZE*sizeof(char), 1, file);
}
答案 0 :(得分:3)
不,那可能会崩溃。 :)
buffer
的地址,这已经是指针:这是错误的。只需将buffer
直接传递给fread()
即可。当buffer
是数组时,&buffer
和buffer
的值相同;不是像你那样在堆上分配它。feof()
,请依赖fread()
。malloc()
in C。sizeof (char)
扩展分配,它始终为1,因此不会添加任何内容。