Partage
  • Partager sur Facebook
  • Partager sur Twitter

Passage de chiffre d'un fichier dans un tableau

    11 octobre 2006 à 18:03:28

    Re-bonjour à tous,

    j'aimerai passer des valeurs d'un fichier dans un tableau. Le fichier se présente comme ca :

    10
    12
    10
    11
    2315
    ...
    Est ce que le code suivant vous semble correct? (j'avais déjà posé la question mais personne ne m'avait répondu, alors j'ai simplifié le code qui étais trop long)
    Ce code fonctionne mais je me demande si il existe un autre moyen plus "propre" pour le faire?

    voici la portion du code

    // Déclaration des variables
    long positionCurseur = 0, nombreLigne =0, ligneLu =0, i =0;

    float* tableau = NULL;

    // Ouverture du fichier valeurPhi
       FILE* valeur = NULL;
       valeur = fopen("valeur.txt", "r")
       
    // Condition d'ouverture
       if (valeur != NULL)
       {         
    // Determiner le nombre de chiffre dans le fichier
                  nombreLigne = 0;
      do
      {     ligneLu = fgetc(valeur);
            if (ligneLu == '\n')
            nombreLigne++;
      }
        while(ligneLu != EOF);
       
    //Retour du curseur au début du fichier
         void rewind (FILE* valeur);
         
         printf ("nombre de lignes du fichier valeur %ld\n",nombreLigne);
       
    // On alloue de la mémoire pour le tableau
            tableau = malloc(nombreLigne * sizeof(float));

            if (tableau == NULL) // On vérifie si l'allocation a marché ou pas
            {
                exit(0); // On arrête tout
            }
           
    // Passage du fichier à un tableau
                for (i = 0; i< nombreLigne ; i++)       
            {
            fscanf(valeur, "%f", &tableau[i]);   
            }
            }



    Merci d'avance et encore merci pour ce site et ces tutoraux géniaux!!
    • Partager sur Facebook
    • Partager sur Twitter
      11 octobre 2006 à 19:37:19

      void rewind (FILE* valeur);


      Quand tu appelles cette fonction il faut pas mettre son prototype mais :

      rewind(valeur);


      do
        {     ligneLu = fgetc(valeur);
              if (ligneLu == '\n')
              nombreLigne++;
        }
          while(ligneLu != EOF);


      C'est peut-être ce que tu as fait mais pour avoir le bon nombre de ligne il faut une ligne vide à la fin de ton fichier sinon à la suite de ton dernier nombre il n'y aura pas de '\n' et la ligne ne sera pas comptée.

      for (i = 0; i< nombreLigne ; i++)       
              {
              fscanf(valeur, "%f", &tableau[i]);   
              }


      Je sais pas si ça marche très bien vu qu'il y a des '\n' à la fin de chaque ligne :o (Je me trompe peut-être :p )


      Sinon, pourquoi tu testes pas ton code pour voir les erreurs?
      Parce que le "void rewind (FILE* valeur);" tu l'aurais remarqué à la compilation...
      • Partager sur Facebook
      • Partager sur Twitter
        12 octobre 2006 à 17:25:15

        Merci pour l'interet que tu as portéà mon code c sympa :) !!
        Il est vrai que le rewind plante, j'ai fait une erreur en voulant simplifier mon code.

        Mais le reste fonctionne sans soucis. Je voulais juste savoir si c'était pas risqué de faire comme ca pour faire passer les chiffres dans un tableau.

        Merci encore une fois pour ta participation.
        • Partager sur Facebook
        • Partager sur Twitter

        Passage de chiffre d'un fichier dans un tableau

        × 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