Partage
  • Partager sur Facebook
  • Partager sur Twitter

C fscanf ? fseek ?

    27 juin 2007 à 10:18:49

    Bonjour

    Mon probleme :
    Je dois lire dans un fichier où la seule information qui me soit accessible est la ligne où ce trouve la valeur que je cherche.

    Et dans le tuto je n'ai trouvé que comment me placer devant tel ou tel caractere mais pas telle ou telle ligne.

    Toute solution a mon probleme est la bienvenue.
    • Partager sur Facebook
    • Partager sur Twitter
      27 juin 2007 à 10:25:52

      Salut,

      Voici deux pistes envisageables (qui reviennent plus ou moins au même) :
      • lire le fichier caractère par caractère, en comptant les caractères "nouvelle ligne" ('\n') jusqu'à ce que tu arrives à la ligne voulue ;
      • utiliser la fonction GNU getline (3) pour lire chaque ligne une à une, jusqu'à ce que tu arrives à la ligne voulue (attention, s'agissant d'une extension GNU non-standard, cette fonction n'est pas disponible si tu développes avec Visual C++).

      Edit: correction de zcode
      • Partager sur Facebook
      • Partager sur Twitter
        27 juin 2007 à 10:26:35

        tu dois compter le nombre de caractere que ca fait (faisablke si tte tes ligne font la même longueur) en n'oubliant pas de compter les "\n",

        sinon tu lis les ligne une par une avec un fgets ou quelquechose du genre jusqu'Ã te palce devant celle qui t'interesse
        • Partager sur Facebook
        • Partager sur Twitter
          27 juin 2007 à 10:53:19

          merci de vos propositions

          mais en ce qui concerne lire caractère par caractère je ne peux pas car le fichier que je dois lire je ne le connais pas.

          En gros ce qeu je dois faire :
          On fournit a mon programme deux fichier (via leur nom) un lui sert de reference, il contient un tableau a 4 entrées avec pour sortie la corection a apporté a la mesure, le deuxieme est celui que l'on traite, il contient une mesure plus quatre valeur corespondant a mes entrées prescedentes. Puis avec ca je fais une interpolation lineaire de mon tableau à quatre entrées pour donner une valeur aproximative de ma correction.

          Et donc pour ca lorsque je me balade dans mon tableau de reference les seules chose que je sais ce sont : à quelle ligne et a quelle tabulation est ma valeur.

          Apres le seul IDE que j'ai a ma disposition est gcc (je suis dans un labo sous linux)

          En esperant que vous pourez m'aider.
          • Partager sur Facebook
          • Partager sur Twitter
            27 juin 2007 à 11:30:20

            Ce que ferais c'est que je lirai caractère par caractère en comptant les "\n", ou je lirai ligne par ligne, jusqu'à me retrouver à la bonne ligne, puis je lirai caractère par caractère et comptant les caractères de séparation des mesures/nombre/groupe de caractère, afin d'atteindre la bonne tabulation.

            Je pense à quelque chose d'un coup, une fois que tu est sur la ligne qu etu veux, si tu sais somment est formaté la ligne, tu fais un fscanf en prenant toutes les variables de la ligne, tu n'auras qu'a utilisé celle qui t'interesse
            • Partager sur Facebook
            • Partager sur Twitter
              27 juin 2007 à 11:55:13

              voici la solution que j'ai retenu :
              for(i=0;i<ligne;i++)
              {fscanf(fich,"%lg \t%lg \t%lg \t%lg \t%lg",&x,&y,&z,&w,&correction);
              }


              si vous avez des solutions plus directe je les accepte volontier.
              • Partager sur Facebook
              • Partager sur Twitter
                27 juin 2007 à 13:53:22

                il passe bien à la ligne??? car tu ne scan pas les "\n"
                • Partager sur Facebook
                • Partager sur Twitter
                  27 juin 2007 à 14:16:45

                  Ca ne pose aucun probleme, puisque lorsqu'il lance le scanf il cherche dabord le premier caractère autre que " " ou "\n" et autre du style, donc pas la peine de lui pressiser.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    27 juin 2007 à 14:22:11

                    ok je me souvenais pas, parfait, ba écoute je pense que tu as la meilleur solution
                    • Partager sur Facebook
                    • Partager sur Twitter

                    C fscanf ? fseek ?

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown