Partage
  • Partager sur Facebook
  • Partager sur Twitter

Dernier cours de Matéo

Récupération données pour variables.

    19 février 2006 à 21:21:58

    Salut à tous,
    Suite au dernier chapitre de Matéo, j'essaie desespérement de mettre dans une variable un chiffre enregistré dans un fichier .TXT
    Je vous montre le code (j'ai mis en MAJUSCULE dans les commentaires les deux endroits ou ça ne fonctionne pas).

    #include<stdio.h>
    #include<math.h>
    #include<stdlib.h>
    #include<time.h>
    #define TAILLE_MAX 1000

    main(int argc, char *argv[])
    {

    /*borne debut du timer*/

    time_t debut,fin;
    char szInput [256];
    time (&debut);

    /*mise en place des variables, je n'ai volontairement
      pas mis de chiffre sur la variables TempsPrecedent,
      car c'est celle ci qui doit être modifiée par le fichier .TXT*/


    double DureeUtilisation=0;
    double TempsTotal=0;
    double TempsPrecedent;

    /*recuparation du temps d'utilisation de la session précédente
      grace à l'enregistrement du temps dans le fichier .TXT*/


    FILE* fichier = NULL;
        char chaine[TAILLE_MAX] = "";

        fichier = fopen("dureetotale.txt", "r+");

        if (fichier != NULL)
        {
            fgets(chaine, TAILLE_MAX, fichier);

    /*A CE NIVEAU LA RECUPERATION DE L INFORMATION VIA LE FICHIER TXT
      EST PARFAITE (on le constate à l"écran avec le printf) MAIS
      L ENREGISTREMENT DE LA PHRASE double TempsPrecedent=(xx); ,AFIN
      QUELLE SOIT CONSIDEREE COMME UNE VARIABLE, NE SE FAIT PAS !!!*/

             
            printf("%s", chaine);
            fclose(fichier);
        }
    system("PAUSE")


    /*debut du programme d'addition de deux nombres*/

    long resultat = 0, nombre1 = 0,  nombre2 = 0;
    int continu=1;
    while(continu==1)
    {
     
    int H=0;
    printf("1 - saisie numero 1\n");
    printf("2 - saisie numero 2\n");
    printf("3 - total\n");
    scanf("%d",&H);
    while(H!=1 && H!=2 && H!=3)
    {
    scanf("%d",&H);
    }

    if(H==1)
    {
    printf("saisie numero 1\n");
    printf("Entrez le premier nombre de votre addition : ");
    scanf("%ld", &nombre1);
    }
    else if(H==2)
    {
    printf("saisie numero 2\n");
    printf("Entrez le deuxieme nombre de votre addition : ");
    scanf("%ld", &nombre2);

    }
    else if(H==3)
    {
    printf(" \n");
    printf("total de l'addition\n");
    resultat = nombre1 + nombre2;
    printf ("%ld + %ld = %ld\n", nombre1, nombre2, resultat);
    system("PAUSE");

    /*fin du programme de calcul d'addition de deux nombre*/

    /*borne fin du timer*/

    time (&fin);

    /*calcul de différence de temps entre les deux bornes du timer*/ 

      DureeUtilisation = difftime (fin,debut);

    /*mise en place d'un printf pour indication à l'écran du temps
      d'utilisation actuel de l'executable*/
     

      printf(" ");
      printf ("Duree d'utilisation du programme : %.0lf secondes \n", DureeUtilisation );
     
    /*section du prog. calculant le temps total d'utilisation de l'exe
      depuis la 1ere utilisation*/


    TempsTotal=(TempsPrecedent+DureeUtilisation);

    /*indication à l'écran du temps total d'utilisation de l'executable
      NORMALEMENT C EST A CE NIVEAU QUE DEVRAIT APPARAITRE LE CUMUL DU
      TEMPS TOTAL D UTILISATION DE L EXE - HORMIS LORS DE LA PREMIERE
      UTILISATION (ce qui est normal puisque le temps précedent est
      égal à zero) CELA NE FONCTIONNE PAS*/
     

         printf ("Duree total du programme : %.0lf secondes \n", TempsTotal );

    /*section d'enregistrement du temps d'utilisation dans un fichier .TXT*/     

        FILE* fichier = NULL;
        fichier = fopen("dureetotale.txt", "w");
        if (fichier != NULL)
        {
    /*Transfert d'allocation : le temps total d'utilisation de cette session
      est transformé dans le fichier .TXT en temps précedent en prévision de
      l'ouverture de la prochaine session*/
           

            fprintf(fichier, "double TempsPrecedent = %.0lf;", TempsTotal);
            fclose(fichier);
        }
       
    system("PAUSE")

    }
    }
    return 0;
    }


    Si vous le compilez n'oubliez pas de créer un fichier dureetotale.TXT et d'exécuter le programme en entier au moins deux fois.
    Si quelqu'un peut me dépanner
    Merci.
    • Partager sur Facebook
    • Partager sur Twitter
      19 février 2006 à 23:55:13

      Au niveau du premier comment, que donne un :
      TempsPrecedent = atoi(chaine);
      ?
      • Partager sur Facebook
      • Partager sur Twitter
        20 février 2006 à 12:18:24

        ça ne donne rien, voilà ce que met le compilateur :

        `chaine' undeclared (first use in this function)
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          20 février 2006 à 12:20:00

          Ben faut la déclarer alors (Huhuhu)
          Sinon tu connais un truc nommé indentation?
          • Partager sur Facebook
          • Partager sur Twitter
            20 février 2006 à 12:20:28

            Sa veux dire que t'as pas déclarer la variable chaine.

            EDIT : Arf le plus lent
            • Partager sur Facebook
            • Partager sur Twitter
              20 février 2006 à 21:22:27

              Salut, à tous,
              J'ai modifié mon code (extrait) comme cela :

              /*borne debut du timer*/

              time_t debut,fin;
              char szInput [256];
              time (&debut);
              char chaine[TAILLE_MAX] = "";
              double TempsPrecedent;
              TempsPrecedent = atoi(chaine);

              /*mise en place des variables, je n'ai volontairement
                pas mis de chiffre sur la variables TempsPrecedent,
                car c'est celle ci qui être modifiée par le fichier .TXT*/


              double DureeUtilisation=0;
              double TempsTotal=0;

              /*recuparation du temps d'utilisation de la session précédente
                grace à l'enregistrement du temps dans le fichier .TXT*/


              FILE* fichier = NULL;
                  fichier = fopen("dureetotale.txt", "r+");

                  if (fichier != NULL)
                  {
                      fgets(chaine, TAILLE_MAX, fichier);

              /*A CE NIVEAU LA RECUPERATION DE L INFORMATION VIA LE FICHIER TXT


              Désolé, mais ça ne change strictement rien.
              Donc, si je veux récupérer l'élément enregistré dans le fichier .TXT et le reverser dans une variable (c'est le but de l'opération), comment faire ?

              • Partager sur Facebook
              • Partager sur Twitter
                20 février 2006 à 23:12:23

                bah int variable = atoi(chaine); :p
                (après le fgets évidemment)
                (faut inclure string.h, au fait)


                Ou alors fscanf(fichier, "%d", &variable);
                après avoir déclaré la variable, bien sur...
                • Partager sur Facebook
                • Partager sur Twitter
                  21 février 2006 à 13:16:40

                  J'ai essayé mais ça ne fonctionne toujours pas, voila de début de code modifié :

                  #include<stdio.h>
                  #include<math.h>
                  #include<stdlib.h>
                  #include<time.h>
                  #include<string.h>
                  #define TAILLE_MAX 1000


                  main(int argc, char *argv[])
                  {

                  /*borne debut du timer*/

                  time_t debut,fin;
                  char szInput [256];
                  time (&debut);

                  /*mise en place des variables, je n'ai volontairement
                    pas mis de chiffre sur la variables TempsPrecedent,
                    car c'est celle ci qui être modifiée par le fichier .TXT*/


                  double DureeUtilisation=0;
                  double TempsTotal=0;
                  double TempsPrecedent;
                  /*recuparation du temps d'utilisation de la session précédente
                    grace à l'enregistrement du temps dans le fichier .TXT*/


                  FILE* fichier = NULL;
                      char chaine[TAILLE_MAX] = "";
                      fichier = fopen("dureetotale.txt", "r+");

                      if (fichier != NULL)
                      {
                          fgets(chaine, TAILLE_MAX, fichier);
                          int variable = atoi(chaine)
                          TempsPrecedent = atoi(chaine);

                  /*A CE NIVEAU LA RECUPERATION DE L INFORMATION VIA LE FICHIER TXT
                    EST PARFAITE (on le constate à l"écran avec le printf) MAIS
                    L ENREGISTREMENT DE LA PHRASE double TempsPrecedent=(xx); ,AFIN
                    QUELLE SOIT CONSIDEREE COMME UNE VARIABLE, NE SE FAIT PAS !!!*/

                           
                          printf("%s", chaine);
                          fclose(fichier);
                      }

                  system("PAUSE")


                  /*debut du programme d'addition de deux nombres*/


                  Je crois avoir bien mis les éléments que tu m'as dit, mais sans succes
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Dernier cours de Matéo

                  × 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