[Langage C] Obtenir une ligne d'un fichier (scanf%[^X])

Signaler
Messages postés
2
Date d'inscription
mercredi 3 septembre 2003
Statut
Membre
Dernière intervention
4 janvier 2007
-
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
-
Bonjour, j'essaie de créer une fonction qui doit lire une ligne entière d'un fichier texte (donc jusqu'au '\n' mais ça ne marche pas. (C'est la même que scanf en gros, avec le %[^\n])
Voici son interface :
type : (FILE* x int)-> char*
arguments : le fichier 'fich' qu'on lit, la ligne que l'on souhaite récupérer 'n'.
retourne : la ligne n du fichier 'fich' sous forme de chaîne de caractère.

J'ai codé le truc ci dessous, mais, étrangement, quand j'appelle ma fonction, je suis obligé de faire un 'printf' entre chacun de ses appels... ? Si quelqu'un a une idée ca me permettrais de cmprendre un peu mieux, merci !

char* get_ligne(FILE * fich, int n) {
  int i = 0, c, j=0;
  char*s;
  if (fich == NULL) {
fprintf(stderr, "Erreur de lecture du fichier.\n");
exit(1);
}
  
  c=fgetc(fich);
  do{
      if (c=='\n') { 
        i++; 
        }
   
      if (i==n) {
        while((c=fgetc(fich))!='\n') {
    s[j]=(char) c;
    j++;
        }
 
        s[j]='\0';
        fseek(fich,0, SEEK_SET);
        return s;
    }
  }while((c=fgetc(fich))!=EOF);
  fseek(fich,0, SEEK_SET);
  return s;
}

3 réponses

Messages postés
2
Date d'inscription
mercredi 3 septembre 2003
Statut
Membre
Dernière intervention
4 janvier 2007

Arg désolé c'est mon premier post, il est assez horrible. Si quelqu'un sait comment le remettre en forme peut il m'informer? Je n'ai pas trouvé comment insérer des balises etc...?
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
type : (FILE* x int)-> char*
Ca me fait penser au Caml ca (mais pas au C)

Pourquoi tu n'utilises pas fgets?

_____________________________________
Un éditeur de ressources gratuit pour Windows
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
Il n'y a pas de balises pour la mise en forme, mais ce n'est pas grave
Essaie de le mettre avec les retours à la lignes, c'est quand même plus lisible

_____________________________________
Un éditeur de ressources gratuit pour Windows