2

我试图了解如何在 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);
}
4

1 回答 1

3

不,那可能会崩溃。:)

  1. 您正在获取 的地址buffer,这已经是一个指针:这是错误的。buffer直接传给fread(). buffer和的值只有在是数组&buffer时才相同;buffer不是当它像你一样在堆上分配时。
  2. 不要使用feof(),依赖 的返回值fread()
  3. 不要强制转换malloc()in C的返回值。
  4. 不要按比例分配分配sizeof (char),它总是 1,所以它什么都不增加。
于 2013-10-21T08:52:08.823 回答