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.