2016-10-22 5 views
0

Это действительно простая проблема, поэтому я знаю, что мне не хватает чего-то очевидного, но я не могу понять, как это понять. Я просто пытаюсь читать текст за строкой, используя fgets, однако я получаю дополнительную информацию, которую я предполагаю, связан с заголовком файла.Неожиданная информация заголовка от fgets

Короче говоря, я сделал новый текстовый файл с помощью нано, что это просто одна десятичной цифры в строку, то есть:

2 
8 
3 
4 
... 

Мой код для чтения файла является:

char line[20]; 
FILE * fp; 
fp = fopen(infile, "r"); 
if (fp == NULL) 
    exit(EXIT_FAILURE); 
while(fgets(line, sizeof(line), fp)) { 
    ... do some stuff ... 
} 
fclose(fp); 

Однако , первая строка, которую он возвращает, равна "\177ELF\002\001\001", и все последующие строки до тех пор, пока она не завершится, будут пустыми "".

Любые предложения относительно того, почему я не читаю то, что я ожидаю? Создал ли файл с nano новый дополнительный заголовок, который мне не нужен? Если да, то как я могу избежать этого?

+2

Что такое 'infile'? Похоже, что 'infile' содержит путь к некоторому файлу ELF. – Downvoter

+1

Я не вижу никакой выходной функции. Где [mcve]? – Olaf

+0

Возможно, вы просто должны удалить этот вопрос. Это вряд ли поможет кому-то еще. –

ответ

-1

Вы читаете неправильный файл здесь. Исполняемые файлы, также известные как файлы ELF на многих системах, начинаются с «\ 177ELF \ 002 \ 001 \ 001». Поэтому можно с уверенностью сказать, что у infile есть неправильное значение.

0

Wow Я тупица ... Мне было интересно, что тэг ELF делал в txt-файле, но я был слишком невнимателен, чтобы проверить скрипт, который реализовал эту функцию сам с именем файла. Переключенные соглашения об именах и забыли обновить этот файл.