fread()不起作用,但fwrite()有效吗?

时间:2013-05-25 16:41:23

标签: c file file-io fwrite fread

为什么fread()不起作用,fwrite()有效?

如果我从评论中获得fwrite()而评论中获得fread(),则输出文件的大小为0 bytes ...但如果fwrite()没有评论,则输出文件大小为64 bytes ..

怎么回事?

#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE *input = fopen( "01.wav", "rb");

        if(input == NULL)
        {
            printf("Unable to open wave file (input)\n");
            exit(EXIT_FAILURE);
        }

    FILE *output = fopen( "01_out.wav", "wb");


    //fread(output, sizeof(char), 64, input);
    fwrite(input, sizeof(char), 64, output);

    fclose(input);
    fclose(output);

    return 0;
}

2 个答案:

答案 0 :(得分:3)

您应该从输入文件中读取并写入输出文件。

char buf[64];
fread(buf, 1, sizeof(buf), input);
fwrite(buf, 1, sizeof(buf), output);

您的代码应检查freadfwrite的错误返回值。

答案 1 :(得分:1)

fread(output, sizeof(char), 64, input);

此行将从输入文件中读取64个字节,并将这64个字节存储在output指向的内存中。它不会向输出文件写入任何内容。由于output是一个文件指针而不是指向数组的指针,因此使用它是没有意义的。

fwrite(input, sizeof(char), 64, output);

该行将从input指向的内存中读取64个字节,并将其写入输出文件。它不会从输入文件中读取任何内容。同样,由于input指向的内存只包含FILE对象而不包含输入文件的内容,因此无法执行您想要的操作。