2013-06-28 2 views
1

я 100% уверен, что байты файла WAV являются chunkSize + 8, что я пытался сделать является:Как я могу найти байты wav-файла?

fseek(file_pointer, chunkSize+8-4, SEEK_SET)

, а затем использовать

fread(rev, 4, 1, file_pointer)

к поместите последние 4 байта в массив rev unsigned char rev[4]. Но байты, которые он помещает в rev, наверняка не являются 4 последними байтами. Я работаю над проектом столько часов, и я все еще не могу понять, почему это не работает. Если кто-то скажет мне правильный ответ, я сейчас построю ему статую.

+0

Если вы хотите использовать последние 4 байта файла, почему вы не используете 'SEEK_END'? –

+0

Реальная проблема заключается в возврате wav-файла. поэтому, когда я читаю 4 последних, то я с fseek я укажу на следующие 4 (направление на начало), я прочитаю их ... затем следующий 4. Я должен знать, когда остановиться. Вот почему –

+0

Насколько велика может быть этот файл? Почему бы просто не прочитать все это в памяти, отменить его, а затем записать обратно? –

ответ

1

Если вы хотите получить доступ последние 4 байта файла, вы можете использовать SEEK_END, например, так:

fseek(file_pointer, -4, SEEK_END); 

fread должны затем вернуть последние четыре байта.

+0

, потому что я не буду знать, когда остановиться. Потому что после принятия этих 4 байтов я хочу следующие 4 байта и следующий ... до тех пор, пока я не доберусь до заголовка ((44 байта от начала - конец заголовка), где я остановлюсь –

+0

Я не совсем уверен, что понимаю - вы пытаетесь прочитать последние 4 байта wav-файла? Является ли wav-файл встроенным в другой файл? –

+0

Фактический вопрос в том, почему fseek (file_pointer, chunkSize + 8-4, SEEK_SET) не работает. чтобы реверсировать wav-файл. Если я решаю, почему это не работает, я решу всю проблему. –