2

为什么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;
}
4

2 回答 2

3

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

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

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

于 2013-05-25T16:43:58.860 回答
1
fread(output, sizeof(char), 64, input);

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

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

此行将从input指向的内存中读取 64 个字节并将其写入输出文件。它不会从输入文件中读取任何内容。同样,这不会做你想要的,因为input指向的内存只包含一个FILE对象而不是输入文件的内容。

于 2013-05-25T16:50:55.893 回答