C中的基本读/写说明

时间:2013-10-21 08:45:35

标签: c input buffer output

我正在尝试理解如何在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);
}

1 个答案:

答案 0 :(得分:3)

不,那可能会崩溃。 :)

  1. 您正在使用buffer的地址,这已经是指针:这是错误的。只需将buffer直接传递给fread()即可。当buffer是数组时,&bufferbuffer的值相同;不是像你那样在堆上分配它。
  2. 请勿使用feof(),请依赖fread()
  3. 的返回值
  4. Don't cast the return value of malloc() in C
  5. 不要按sizeof (char)扩展分配,它始终为1,因此不会添加任何内容。