fread() не работает, но fwrite() работает?

Зачем 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 ответа

Решение

Вы должны прочитать из вашего входного файла и записать в свой выходной файл.

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

Ваш код должен проверять возвращаемые значения fread а также fwrite за ошибки.

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

Эта строка будет читать 64 байта из входного файла и сохранять эти 64 байта в памяти, которая output указывает на. Он не будет ничего записывать в выходной файл. поскольку output это указатель файла, а не указатель на массив, поэтому использовать его не имеет смысла.

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

Эта строка будет читать 64 байта из памяти, которая input указывает и записывает их в выходной файл. Он не будет читать ничего из входного файла. Again this won't do what you want since the memory that input points to simply contains a FILE object and not the contents of the input file.

Другие вопросы по тегам