Forum Programmation.c fichier texte

Posté par  .
Étiquettes : aucune
0
17
nov.
2005
bonjour à tous!
je cherche comment faire pour utiliser un fichier texte...
je m'explique je veux créer par exemple un fichier record.txt, je fait cela en dehors de la programmation, "à la main", puis je veut pouvoir récupéré le texte qu'il y dessus et/ou le modifier...
je voulais essayer de faire une sauvegarde des records d'un jeu.
voila si vous avez des commandes spéciales qui permettent çà...
merci
  • # ...

    Posté par  . Évalué à 1.

    man fopen
    man fgets
    man fprintf
    man strtok
    man strcmp
    man atoi

    puis avec les see also ca devrait aller :)

    bonnes lectures

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: ...

      Posté par  . Évalué à 2.

      merci je vais regarder et je vous dit le résultat dans 15 jours après avoir tt lu ;-)
    • [^] # Re: ...

      Posté par  . Évalué à 2.

      La page de man de strtok spécifie :


      BUGS

      Never use these functions. (...)



      Gérer du texte avec la bibliothèque de base du C est vraiment pénible.
      Si tu as le choix - si tu ne fais ça pour un devoir pour lequel ton prof t'a dit explicitement d'utiliser les fonctions de la bibliothèque standard - je te conseille d'apprendre la glib - c'est une des bibliothèques de base de GNOME. Le C devient soudainement beaucoup plus sympathique.
      • [^] # Re: ...

        Posté par  . Évalué à 0.

        moi je voudrai juste pouvoir sauvegarder des données d'une utilisation à l'autre du programme, et pouvoir les lires et les modifié, après que ce soit du sur un fichier txt ou autre chose, ou avec une fonction x ou y, peu m'importe, le seul truc que je veu c'est une "certaine" simplicitée
    • [^] # Re: ...

      Posté par  . Évalué à 0.

      bon alors j'ai fait un programme d'essai pour la fonction fgets,voici mon programme:

      #include<stdio.h>
      int main(void)
      {
      int i;
      char chaine[20];
      for(i=0;i<19;i++)
      chaine[i]='a';
      chaine[19]='\0';
      printf("%s\n",chaine);
      fgets(chaine,10, FILE essai.txt);
      printf("%s\n",chaine);
      return 0;
      }

      et voici le contenu de mon fichier essai.txt:
      ça marche

      je précise, que les deux fichiers sont dans le même répertoire.
      le problème c'est que quand je compile, j'ai message d'erreur:

      chaine.c:10: error: parse error before "FILE"

      et si j'enlève le FILE, y me demande de déclarer la variable essai...
      je suis perplexe...
      voila en espérant que vous ayez une solution...
      • [^] # Re: ...

        Posté par  . Évalué à 1.

        je suis pas un pro du C mais le nom du fichier c'est une chaine de caractères donc "essai.txt" entre guillemets.
        • [^] # Re: ...

          Posté par  . Évalué à -3.

          je vien d'essayer, ça ne marche pas...:-(
      • [^] # Re: ...

        Posté par  . Évalué à 2.

        c'est logbique ^^

        bon voila une petite correction

        FILE *fich = fopen("toto.txt","r"); // r pour read w pour write rw pour... man fopen
        ...
        fgets(chaine, 10, fich);
        ...

        fclose(fich);
        return 0;

        voila

        Il ne faut pas décorner les boeufs avant d'avoir semé le vent

        • [^] # Re: ...

          Posté par  . Évalué à 0.

          merci beaucoup, ça marche, par contre je n'ai pas mit le fclose(fich); et ça marche quand-même, à quoi sert cette fonction?
          si j'ai bien compris, si je veu pouvoir ecrire et lire, je met "rw" comme option?
          • [^] # Re: ...

            Posté par  . Évalué à 3.

            fclose() sert à libérer les ressources associées à fich. Effectivement, si tu te contentes de faire un petit programme de test qui ouvre un fichier, le lit et se termine, fclose() ne t'apportera rien.

            Mais si tu as un serveur (mettons un serveur web), qui accepte une requête HTTP, ouvre le fichier html à servir avec fopen(), le lit pour l'envoyer sur le réseau et que tu ne fais pas de fclose(), au bout d'un certain nombre de requête, tes fopen vont planter avec un EMFILE (too many open file).

            C'est une excellente habitude à prendre en programmation - et surtout en C - que de libérer les ressources dont tu n'as plus besoin.
          • [^] # Re: ...

            Posté par  . Évalué à 1.

            si j'ai bien compris, si je veu pouvoir ecrire et lire, je met "rw" comme option?

            r+ Ouvre le fichier en lecture et écriture. Le pointeur de flux est placé au début du fichier.

            (Extrait du man de fopen.)
      • [^] # Re: ...

        Posté par  (site web personnel) . Évalué à 2.

        http://www-ipst.u-strasbg.fr/pat/program/tpc.htm
        rubrique "les fichiers de données"
    • [^] # Re: ...

      Posté par  . Évalué à 2.

      atoi est dépréciée en C99, il faut lui préférer les strto(u)(l)l. (atoi() ne permet pas un contrôle très "fin" des erreurs, c'est le moins que l'on puisse dire...)
  • # Un éditeur de texte ?

    Posté par  . Évalué à -2.

    Si tu veux faire de la saisie interactive, le plus simple est un éditeur de texte. Regardes du cé de gedit ou Kate.
    • [^] # Re: Un éditeur de texte ?

      Posté par  . Évalué à 0.

      je sais pas trop ce que c'est que la saisie interactive?
      moi ce que je veu c'est un fichier qui contient par exemple:
      12 45 60
      et récupérer ça dans une chaine le traité blablabla....
      et puis si par exemple le changer en prenant la chaine suivante:
      nouveaux_records="13 45 66";

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.