2010-08-20 6 views
1

bonjour j'ai eu un problème avec la lecture d'un fichier, j'essaie de lire à partir d'un fichier en utilisant fscanf() et je ne peux pas sembler le trier. j'essaie de lire la ligne de fichiers en ligne et de mettre la chaîne dans une variable (tampon) à chaque fois, mais je ne peux pas comprendre comment la boucle while est supposé être à la recherche comme merci à l'avanceLecture à partir d'un fichier

le fichier que je veux read from est un fichier txt avec ce format: première ligne: "1234, abc, etc" deuxième ligne: "2432, fjh, etc" et plus de lignes comme celles que je veux pouvoir utiliser la méthode fscanf pour les mettre dans chaque boucle toute la ligne permet de dire "1234, abc, etc" dans ma variable de chaîne et ainsi de suite jusqu'à ce que je n'ai plus de lignes à lire

c'est ce que j'ai réussi à rassembler jusqu'à présent (mais ce n'est pas la façon curret pour l'écrire):

char* buffer[100]; 
while (fscanf(FILE *finput,"%s",buffer)!=something) 
{ 
    printf("%s",buffer); 
} 

Je veux que ce code pour pouvoir imprimer toutes les lignes dans mon code si vous seriez en mesure de corriger mes erreurs je vais grandement appriciate il

+5

Publiez-vous le code que vous avez saisi? –

+2

Vous devriez également inclure une description (ou un échantillon, ou les deux) des données que vous essayez de lire. –

Répondre

3

Je me sens comme vous devriez lire quelques-uns de ces grands sujets d'abord :

Trouble reading a line using fscanf()

Reading file using fscanf() in C

fscanf multiple lines [c++]

Il y a plein de raisons pour lesquelles vous devriez utiliser fgets ou autre chose à la place.

Citation de cette place:

fscanf() est une fonction orientée champ et est inapproprié pour une utilisation dans un solide, un lecteur de fichiers de texte d'usage général. Il a deux inconvénients majeurs:

  • Vous devez connaître à l'avance la disposition exacte des données du fichier d'entrée et réécrire l'appel de fonction pour chaque disposition différente.
  • Il est difficile de lire des chaînes de texte contenant des espaces car fscanf() voit les caractères d'espace comme des délimiteurs de champs.
Si vous connaissez la taille du fichier que vous essayez de lire, vous pouvez utiliser fread

+0

le problème est que lorsque j'utilise fgets je reçois des erreurs tout en essayant de lire les lignes vides –

+0

fgets() s'arrêtera quand il rencontre un caractère de nouvelle ligne. Je dois vous suggérer de jeter un oeil ici: Fichiers texte en C - http://www.mrx.net/c/readfunctions.html – karlphillip

+0

la chose est que lorsque j'utilise fgets et avoir des lignes vides à la fin de mon fichier Je reçois une erreur de segmentation quand j'excute mon fichier en utilisant Linux même si j'essaie de l'ignorer avec cette ligne de commande: 'if (strcmp (buffer," \ n ") == 0) {continue;}' –

Questions connexes