Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ecrire dans un fichier

Sujet résolu
    3 mai 2006 à 19:37:51

    Salut les zér0s,

    je suis au TP sur l'écriture dans un fichier et pour progresser, j'ai décider de m'exercés à faire le Défi C qui est Un éditeur de texte en console, je suis que très peu avancer et pour cause, j'ai commencé il y a 30 minutes lol mais ca fait 10 minutes que j'éssaie de trouver la solution dans les précédent tuto sur le C (notament sur le char) mais je n'arrive pas à gérer les espaces, si je tape par exemple : Salut les zéros ! et bien l'éditeur ne va écrire que le Salut

    Voila mon code source

    #include <stdlib.h>
    #include <stdio.h>


    int main(int argc, char *argv[])
    {
        FILE* fichier = NULL;
        char texte[250];
        long longueurChaine = 0;
       
        fichier = fopen("texte.txt", "r+");
       
        if(fichier != NULL)
        {
            printf("Editeur de texte\n");
            printf("Attention, nous ne pouvez utiliser que 250 caracteres,\nune fois votre phrase ecrite, faites entree ! !\n\n");
            printf("Tapez ici votre texte : ");
            scanf("%s", &texte);
           
            longueurChaine = strlen(texte);
           
            if(longueurChaine > 250)
            {
                   printf("Votre phrase fait plus de 250 caracteres !\n");
            }
            else
            {
                  fprintf(fichier, "%s", texte);
                  printf("Votre phrase a ete ecrite avec succees !\n\n");
           
            }   
            fclose(fichier);       
        }
        else
        {
            printf("Erreur dans l'ouverture du fichier.\n\n");
        }
       
        system("PAUSE");
        return 0;
    }


    • Partager sur Facebook
    • Partager sur Twitter
      3 mai 2006 à 19:41:27

      scanf() se sert des espaces blancs comme délimatateurs, donc c'est normal qui s'arrête dès qu'il rencontre un espace.
      Utilise plutôt fgets pour lire une chaîne et sscanf si il y a des conversion à faire.

      ++
      • Partager sur Facebook
      • Partager sur Twitter
        3 mai 2006 à 19:44:10

        heu j'ai compris pour scanf (le délimotateur) mais alors j'ai rien capter sur fgets, je ne veux pas lire, je veux écrire lol

        (désoler si je dit une connerie, je suis un vrai zér0s en C)
        • Partager sur Facebook
        • Partager sur Twitter
          3 mai 2006 à 19:47:00

          Voilà un exemple :


          char sa[50] = {0};

          fgets(sa, sizeof sa, stdin);
          printf(sa);


          1ier argument : chaîne qui servira à la saisie
          2ème : nombre maximal de caractères (sizeof sa retourne la taille du tableau donc 50)
          3ieme: équivaut à l'entrée standart
          • Partager sur Facebook
          • Partager sur Twitter
            3 mai 2006 à 19:55:23

            merci pour ton explication, mais je ne comprend pas, les nom de tes variables ne sont pas très claires ! sa correspond a quoi ? et stdin ?

            fgets(sa, sizeof sa, stdin);
            • Partager sur Facebook
            • Partager sur Twitter
              3 mai 2006 à 20:00:23

              sa est un tableau de caractères comme ton tableau texte[250] dans ton code, rien de plus.
              stdin correspondant à l'entrée standard, c'est à dire le clavier.
              D'habitude fgets sert à lire des données dans un fichier, mais là on utilise le clavier pour envoyer des données, le stdin remplace le fichier en quelque sorte.

              plus de détails sur fgets() : http://dpobel.free.fr/man/html/affiche_man.php/969/man/fgets/
              • Partager sur Facebook
              • Partager sur Twitter
                3 mai 2006 à 20:03:33

                la c'est déjà plus clair ! même si je ne voit toujours pas comment l'utiliser (et oui Zér0s for ever). Pourrais tu me faire un exemple en utilisant mon code !

                Merci et désoler d'etre aussi chiant :-°
                • Partager sur Facebook
                • Partager sur Twitter
                  3 mai 2006 à 20:08:14


                  int main(int argc, char *argv[])
                  {
                      FILE* fichier = NULL;
                      char texte[250];
                      long longueurChaine = 0;

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

                      if(fichier != NULL)
                      {
                          printf("Editeur de texte\n");
                          printf("Attention, nous ne pouvez utiliser que 250 caracteres,\nune fois votre phrase ecrite, faites entree ! !\n\n");
                          printf("Tapez ici votre texte : ");
                          fgets(texte, sizeof texte, stdin);
                          fprintf(fichier, "%s", texte);
                          printf("Votre phrase a ete ecrite avec succees !\n\n");
                          fclose(fichier);
                      }
                      else
                      {
                          printf("Erreur dans l'ouverture du fichier.\n\n");
                      }

                      return 0;
                  }
                  • Partager sur Facebook
                  • Partager sur Twitter
                    3 mai 2006 à 20:11:21

                    a merci, ca fonctionne niquel, je pensait que sizeof était une variable ou un autre truc du genre lol.

                    Enore merci et désoler d'avoir mis autant de temps a capter lol !
                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 mai 2006 à 23:48:51

                      Citation : Anewa29

                      a merci, ca fonctionne niquel, je pensait que sizeof était une variable ou un autre truc du genre


                      sizeof est un opérateur unaire (un seul opérande) qui retourne la taille d'un objet ou d'un type en bytes.

                      sizeof objet
                      sizeof (type)

                      La valeur retournée est de type size_t.


                      • Partager sur Facebook
                      • Partager sur Twitter
                      Music only !

                      Ecrire dans un fichier

                      × 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