2016-10-22 5 views
0

Ceci est un problème très simple, donc je sais qu'il me manque quelque chose d'évident, mais je n'arrive pas à le comprendre. J'essaie simplement de lire le texte ligne par ligne en utilisant des fgets, mais je reçois des informations supplémentaires que je suppose être associé à l'en-tête du fichier.Informations d'en-tête inattendues à partir de fgets

Longue histoire courte, je fait un nouveau fichier texte à l'aide de nano qui est tout simplement un chiffre décimal par ligne, à savoir:

2 
8 
3 
4 
... 

Mon code pour lire le fichier est:

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); 

Cependant , la première ligne renvoyée est "\177ELF\002\001\001" et toutes les lignes suivantes jusqu'à ce qu'elle se termine sont vides "".

Des suggestions sur les raisons pour lesquelles je ne lis pas ce que j'attends? Le fait de créer le fichier avec nano a-t-il introduit un contenu indésirable supplémentaire que je ne veux pas? Si oui, comment pourrais-je éviter cela?

+2

Qu'est-ce que 'infile'? On dirait que 'infile' contient un chemin vers un fichier ELF. – Downvoter

+1

Je ne vois aucune fonction de sortie. Où est le [mcve]? – Olaf

+0

Vous devriez probablement supprimer cette question. Il est peu probable d'aider quelqu'un d'autre. –

Répondre

-1

Vous lisez le mauvais fichier ici. Les exécutables, également appelés fichiers ELF sur de nombreux systèmes, commencent par "\ 177ELF \ 002 \ 001 \ 001". Il est donc prudent de dire que l'infile a une valeur incorrecte.

0

Wow, je suis un abruti ... Je me demandais ce que faisait un tag ELF sur un fichier txt, mais j'étais trop imprudent pour vérifier le script qui implémentait la fonction elle-même avec le nom du fichier. Commutations de dénomination passées et oublié de mettre à jour ce fichier.