В этом коде есть по крайней мере одна ошибка в каждой показанной строке.
FILE *nova;
Проще сделать правильную обработку ошибок, если вы будете делать такие вещи с open
, write
иlseek
вместо fopen
, fwrite
и fseek
.
nova=fopen ( "nova.wav", "wb" );
Вторая строка должна быть "r+b"
вместо "wb"
, чтобы вы не усекали файл.Вам нужно проверить на наличие ошибок.
fseek ( nova, 4, SEEK_SET );
Вам необходимо проверить на наличие ошибок.
fwrite ( &brojacC,4,1,nova );
fwrite
всегда следует вызывать со вторым аргументом 1 и третьим аргументом, равным размеруданных для записи;в противном случае невозможно восстановить после коротких записей.Вам нужно проверить наличие коротких записей и ошибок записи.
Вы не показываете код, который инициализирует brojacC
, поэтому я не могу оценить, есть ли у вас проблемы с порядком байтов или дополнением структуры, но держу пари, что выdo.
fseek ( zvuk, 44, SEEK_SET );
Это работает с несвязанным дескриптором файла zvuk
, а не nova
.И вам нужно проверить на наличие ошибок.
fwrite ( &brojacCS2,4,1,nova );
Поскольку вызов fseek
в предыдущей строке был применен к zvuk
, запись производится со смещением 4 + 4 = 8, а не со смещением 44, как было запланировано,Все комментарии в предыдущей строке fwrite
также относятся к этой строке.(Psst: Вам нужно проверить на ошибки.)
Несоответствующий интервал между запятыми, кстати, приглашает богов ударить вас молнией.То же самое можно сказать и о пробелах внутри скобок.