2014-10-23 3 views
0

У меня есть поиск arround, и я не смог найти ответ ... Есть ли fread() в C игнорировать текст ascii в файле? Для Exemple, если я получаю файл так:Просматривает ли fread текст ascii?

this is ascii 
16 
words 
words 
and then binary 
1E 04 1A 00 07 FF 

Итак, есть в любом случае для меня получить только двоичный файл в конце файла и пропустить код ASCII? или fread просто игнорирует его? Спасибо заранее!

+0

Этот файл не содержит ничего, кроме ASCII. Последняя строка просто состоит из шестнадцатеричных цифр и пробелов. Если вы имели в виду, что строка «а затем двоичная» сопровождается 6-байтовой последовательностью, шестнадцатеричное представление которой «1E 04 1A 00 07 FF», пожалуйста, обновите свой вопрос, чтобы сделать это ясно. –

ответ

0

Если вы спрашиваете, будет ли fread() автоматически пропускать информацию, нет. Функция fread() будет считывать с текущую позицию файла для количества байтов, на которое вы указываете. Он будет не пропустить ASCII или текстовую информацию или любую другую информацию.

Если вы только получаете двоичный файл, тогда именно на это указывает позиция файла, когда вы пытались его прочитать.

Если вы только хотите прочитать «двоичный» (цит так, несмотря на то, что это шестнадцатеричных цифр, это еще ASCII) вещи в конце концов, вы должны обнаружить его как-то и не пропустить его самостоятельно, пока вы доходите до этого пункта.

Например, если он всегда находится на расстоянии 42 в файле, вы можете использовать fseek, чтобы перейти к этой точке. Если он всегда находится на шестой строке, вы можете читать символы, пока не достигнете пятой новой строки.

Метод, который вы выберете, будет зависеть от расположения данных и , так как вы можете обнаружить начало двоичной информации.

+0

Итак, если я открою файл для двоичного чтения, указатель начнет с первого двоичного кода, игнорируя часть кода ascii в начале? –

+0

@ JoãoSilva: no. Открытие для двоичного кода будет просто отключать переводы, которые могут быть разрешены в текстовом режиме (например, преобразование CR/LF в NL или, содрогание, удаление закрывающих пробелов при чтении из набора данных FB80 на мэйнфрейме). Это не _skip_ ничего. – paxdiablo

+0

Думаю, вы отредактировали свой ответ. В моих тестовых файлах я всегда буду знать, где начинается двоичный файл, так как я знаю, что мне нужно использовать fseek для перемещения указателя на начало двоичного кода, а затем начать чтение, это то, что я должен делать? –

Смежные вопросы