Forum Programmation.c copier les elements d'un tableau dans un fichier

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
-1
5
fév.
2020

bonjour!
comment copier les elements d'un tableau dans un fichier txt au fure et à mésure que j'ajoute les données dans mon tableau; je l'ai fait avec une boucle for sauf au debut de mon probramme le compteur qui parcour mon fichier est initialisé à 0, consequence : dans mon fichier il ya les doublons d'enregistrement! comment faire mon ajouter sans repasser par i=0 au debut du programme!
merci

      case 1:      printf("\n");
                                bateau[N]=saisie();
                                    N=N+1;


                               FILE *fichier=NULL;
                              fichier=fopen("mon_voillier.txt","a");
                                //printf("la taille du fichier est:%d\n",taille);
                                      if(fichier!=NULL){


                                           for(i=0;i<N;i++){
                                         fprintf(fichier,"%s %s\n%s\n%s\n%s\n%d/%d/%d\n%d/%d/%d\n \n",bateau[i].un_locataire.nom,bateau[i].un_locataire.prenom,bateau[i].un_locataire.cni,bateau[i].id_reservation,bateau[i].id_voillier,bateau[i].date_debut.jour,bateau[i].date_debut.mois,bateau[i].date_debut.annee,bateau[i].date_fin.jour,bateau[i].date_fin.mois,bateau[i].date_fin.annee);
                                             }

                                      fclose(fichier);
                            }


                   break;

affichage apres deux enregistrment dans le fichier!

eee fff
tt
ggg
fff
2/4/2025
5/3/2026

eee fff
tt
ggg
fff
2/4/2025
5/3/2026

aaa ff
ggg
ccc
bbb
2/4/2025
4/5/2026
  • # pourquoi une boucle ?

    Posté par  . Évalué à 5.

    pourquoi ne pas simplement écrire le dernier élément du tableau plutôt que de boucler sur tout le tableau ?

    Par exemple on pourrait faire ceci :

    bateau[N] = saisie();
    FILE *fichier = fopen("mon_voillier.txt", "a");
    if (fichier != NULL){
        fprintf(fichier,
                "%s %s\n%s\n%s\n%s\n%d/%d/%d\n%d/%d/%d\n \n", 
                bateau[N].un_locataire.nom,
                bateau[N].un_locataire.prenom,
                bateau[i].un_locataire.cni,
                bateau[N].id_reservation,
                bateau[N].id_voillier,
                bateau[i].date_debut.jour,
                bateau[N].date_debut.mois,
                bateau[N].date_debut.annee, 
                bateau[N].date_fin.jour, 
                bateau[N].date_fin.mois,
                bateau[N].date_fin.annee);
        fclose(fichier);
    }
    ++N;

    Quelques remarques :

    • initialiser ton pointeur fichier à NULL ne sert à rien si tu vas le réaffecter à la ligne d'après ;
    • plutôt que d'incrémenter tes variables de façon pédestre, je te conseille d'apprendre à utiliser les opérateurs d'incrémentation du langage, ils sont utilisés partout dans le monde du C ;
    • ton code est extrêmement mal mis en forme, je te conseille d'utiliser un programme de mise en forme automatique de code tel que clang-format, ce sera plus aisé de revoir ton code et de déceler des erreurs ;
    • prends la peine de relire avant de poster, il y a des parties de ton post que j'ai dû relire 4 fois avant de comprendre où tu voulais en venir.
    • [^] # Re: pourquoi une boucle ?

      Posté par  . Évalué à 3.

      Merci beaucoup pour vos remarques!
      c'est noté!
      desolé pour les erreurs je suis débutant en c! je ferais les efforts la prochaine fois!

      • [^] # Re: pourquoi une boucle ?

        Posté par  . Évalué à 3.

        Je me permets… tu es probablement en études d'informatique, non?

        De mon point de vue, m'exprimer correctement et sans fautes au 1er coup dans mon langage naturel (le français) m'aide à gagner du temps dans mon travail. Et je parle pas juste de quelques minutes, mais bel et bien d'heures, et j'ai moins de 40 ans.

        Le fait de savoir respecter une syntaxe et une grammaire permettent d'éviter des crash logiciel pour les langages interprétés (bash, python, perl, php, js, …). Ce n'est pas valide pour les langages compilés, vu qu'un outil passe pour vérifier ces points (C, java, C++, Ada, C#…) mais ça fait gagner du temps de compilation, quand t'as des erreurs un peu point'ues.

        Enfin, s'exprimer de façon intelligible permets de se faire comprendre par des non développeurs, et il m'est arrivé a plus d'une reprise d'avoir la solution à un problème pointu de leurs bouche, quand j'ai su rester humble.

        Ce ne sont que des conseils.

  • # inotify

    Posté par  . Évalué à 1.

    tu pourrais aussi regarder du côté de
    Inotify. C'est un outil qui sert à surveiller les activités sur les fichiers et répertoires (écriture, etc.).
    inotify-tools permettrait de ne lancer ton programme seulement quand ton fichier est modifié, au lieu de faire une boucle "for".

    • [^] # Re: inotify

      Posté par  . Évalué à 0. Dernière modification le 06/02/20 à 11:42.

      Salut,

      C'est un outil qui sert à surveiller les activités sur les fichiers et répertoires (écriture, etc.).

      Il cherche à écrire, pas à lire ;)

      • [^] # Re: inotify

        Posté par  . Évalué à 1.

        il cherche à ajouter des données provenant d'un tableau quand il est modifié. pour faire cela il faut bien le lire le tableau… et dans ce cas inotify peut être pratique.

        • [^] # Re: inotify

          Posté par  . Évalué à 2.

          Salut,

          Message de l'OP :

          comment copier les elements d'un tableau dans un fichier txt au fure et à mésure que j'ajoute les données dans mon tableau

          Je crois que tu suis mal son problème.

          (note au passage, voilier ne prend qu'un l).

          • [^] # Re: inotify

            Posté par  . Évalué à 1. Dernière modification le 07/02/20 à 01:14.

            ah oui ok !
            en lisant "tableau" j'avais compris tableau genre excel ou libreoffice, et pas "array", lol

          • [^] # Re: inotify

            Posté par  . Évalué à 2.

            bah, inotify peut détecter une écriture sur un fichier, et de la, tu peux faire un patch que tu envoies sur la cible… mais bon, il faut qu'il y ait écriture sur le fichier, donc, une sauvegarde.

            Autrement, t'es obligé de coder un plug-in pour l'outil, c'est autrement plus délicat.

Suivre le flux des commentaires

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