Forum Programmation.c probleme d'ecriture dans un fichier

Posté par . Licence CC by-sa.
Tags : aucun
-3
6
fév.
2020

bonjour!
je suis face à un problème qui celui de prendre les éléments d'un fichier mettre dans un tableau, faire une modification puits remettre dans le fichier!
la modification ce passe bien! et même le réécriture dans le fichier ce passe bien sauf que quand je remet dans le fichier les éléments ne s'affiche pas correctement il ya un doublon,
bon c'est mieux que je vous pressente le code!.

//fonction de modification!

void modification(Reservation modif[MAX]){//la fonction recois un tableau a modifier une ou plusieur case//::.

    //int N;
    int rep;//VARIABLE DE CONFIRMATION DE LA MODDIFICATION
    char id_reservation[20];//VARIABLE PERMETTANT DE MODIFIER UNE CASE TU TABLEAU
    int nb;

    do{
        printf("\t voulez vous faire une modification 0:NON 1:OUI\n");
        scanf("%d",&rep);

        if(rep==1){
            printf("\t saisisez le numeros de la reservation\n");
            scanf("%s",id_reservation);
            for(j=0;j<MAX;j++){
                if (strcmp(id_reservation,modif[j].id_reservation)==0){

                    printf("\t **entrer le champ a modifier:\n");
                    printf("\n");
                    printf("\t <**> 0:pour id_reservation\n");

                    printf("\n");
                    printf("\t <**> 1:pour id_voillier\n");

                    printf("\n");
                    printf("\t <**> 2:pour nom_locataire\n");

                    printf("\n");
                    printf("\t <**> 3:pour prenom_locataire\n");

                    printf("\n");
                    printf("\t <**> 4:pour cni\n");

                    printf("\n");
                    printf("\t <**> 5:pour jour_debut\n");

                    printf("\n");
                    printf("\t <**> 6:pour mois_debut\n");

                    printf("\n");
                    printf("\t <**> 7:pour annee_debut\n");
                    printf("\n");
                    printf("\t <**> 8:pour jour_fin\n");

                    printf("\n");
                    printf("\t <**> 9:pour mois_fin\n");

                    printf("\n");
                    printf("\t <**> 10:pour annee_fin\n");
                    scanf("%d",&nb);

                    switch(nb){

                        case 0:printf("Vous allez modifier le numeros de la reservation, saisiser le nouveau numeros SVP :\t");
                               scanf("%s",modif[j].id_reservation);
                               break;

                        case 1:printf("Vous allez modifier le numeros du voilier, saisiser le nouveau numeros SVP\n");
                               scanf("%s",modif[j].id_voillier);
                               break;

                        case 2:printf("Vous allez modifier le nom du locataire, saisiser le nouveau nom SVP\n");
                               scanf("%s",modif[j].un_locataire.nom);
                               break;

                        case 3:printf("Vous allez modifier le prenom du locataire, saisiser le nouveau prenom SVP\n");
                               scanf("%s",modif[j].un_locataire.prenom);
                               break;

                        case 4:printf("Vous allez modifier la CNI du locataire, saisiser sa CNI age SVP\n");
                               scanf("%s",modif[j].un_locataire.cni);
                               break;

                        case 5:printf("Vous allez modifier le jour du debut de location, saisiser le nouveau JOUR SVP!\n");
                               scanf("%d",&modif[j].date_debut.jour);
                               break;

                        case 6:printf("Vous allez modifier le MOIS du debut de location, saisiser le nouveau MOIS SVP!\n");
                               scanf("%d",&modif[j].date_debut.mois);
                               break;

                        case 7:printf("Vous allez modifier l'annee du debut de location, saisiser la nouvelle annee SVP!\n");
                               scanf("%d",&modif[j].date_debut.annee);
                               break;

                        case 8:printf("Vous allez modifier le jour de fin de location, saisiser le nouveau JOUR SVP!\n");
                               scanf("%d",&modif[j].date_fin.jour);
                               break;

                        case 9:printf("Vous allez modifier le MOIS de fin de location, saisiser le nouveau MOIS SVP!\n");
                               scanf("%d",&modif[j].date_fin.mois);
                               break;

                        case 10:printf("Vous allez modifier l'annee de fin de location, saisiser la nouvelle annee SVP!\n");
                            scanf("%d",&modif[j].date_fin.annee);
                            break;


                        default: printf("erreur de saisie");

                    }

                }

            }

        }
        /*else{
          break;
          }*/

    }while(rep==1);

}

je l'appel dans le main sur un tableau qui a ces données

aaaa aaaa
aaaa
aaaa
aaaa
5/4/2026
5/4/2025

bbbb bbbb
bbbb
bbbb
bbbb
5/4/2029
5/4/2023

wwww wwww
wwww
wwww
wwww
8/7/2029
5/4/2025

qqqq qqqq
qqqq
qqqq
qqqq
4/5/2026
5/4/2027

tttt tttt
tttt
tttt
tttt
8/7/2026
8/8/2029

quand le fait une modification disons sur cet élément du tableau,

qqqq qqqq
qqqq
qqqq  ==> est modifier en uuuu
qqqq
4/5/2026
5/4/2027

voila la ce que j'ai dans mon tableau ce qui n'est pas normale

tttt tttt
tttt
tttt
tttt
8/7/2026
8/8/2029

bbbb bbbb
bbbb
bbbb
bbbb
5/4/2029
5/4/2023

wwww wwww
wwww
wwww
wwww
8/7/2029
5/4/2025

qqqq qqqq
qqqq
uuuu
qqqq
4/5/2026
5/4/2027

tttt tttt
tttt
tttt
tttt
8/7/2026
8/8/2029

or normalement ca devrait mettre

aaaa aaaa
aaaa
aaaa
aaaa
5/4/2026
5/4/2025

bbbb bbbb
bbbb
bbbb
bbbb
5/4/2029
5/4/2023

wwww wwww
wwww
wwww
wwww
8/7/2029
5/4/2025

qqqq qqqq
qqqq
uuuu
qqqq
4/5/2026
5/4/2027

tttt tttt
tttt
tttt
tttt
8/7/2026
8/8/2029

merci de m'aider si ous pouvez!

  • # Code dans les posts…

    Posté par (page perso) . Évalué à 5 (+3/-0).

    En bas de la page de rédaction il y a une petite aide, qui indique que pour les codes il faut les encadrer par 3 backquotes (```) au début et à la fin en indiquant le langage après les backquotes du début.

    Ça donne:

    void modification(Reservation modif[MAX]){//la fonction recois un tableau a modifier une ou plusieur case
    
    etc

    Et c'est franchement plus agréable à lire (ça + la mise en page correcte du code, avec des indentations qui vont bien).

    Python 3 - Apprendre à programmer en Python avec PyZo et Jupyter Notebook → https://www.dunod.com/sciences-techniques/python-3

    • [^] # Re: Code dans les posts…

      Posté par (page perso) . Évalué à 5 (+3/-0).

      ça et le fait de fournir un exemple complet étudiable parce que la il ne presente qu'une des fonctions de son outil, et pas celle qui enregistre le tableau dans un fichier donc on va avoir du mal à trouver pourquoi l'enregistrement déconne …

      • [^] # Re: Code dans les posts…

        Posté par . Évalué à 3 (+2/-0). Dernière modification le 07/02/20 à 17:08.

        Je plussoie.

        Montre nous ta main(), je parie sur un problème incrément et décrement.

        Et si je ne me trompe pas en cas d'erreur de saisi, 'j' est incrementé dans la boucle for, mais il ne devrait pas non ? Ca doit faire un décalage dans l'index non?

        • [^] # Re: Code dans les posts…

          Posté par . Évalué à 1 (+3/-4).

          Montre nous ta main(), je parie sur un problème incrément et décrement.

          Heureusement qu'on parle ici de main(), et non de byte(), quand même… non parce que bon, l'incrément, le décrément, l'incrément, c'est… bon, ok. Désolé.

          • [^] # Re: Code dans les posts…

            Posté par . Évalué à 0 (+0/-1).

            Ahah, j'aurais pas osé la faire celle-là.
            À la limite "montre nous ta main() que l'on lise l'avenir de ton script"!

            En même temps faillait y penser, du j'ai mis un +1! freem :)

            Un peu d'humour ça fait pas de mal, au contraire…

            Moi quand ca m'arrive, par contre, je connais d'autres sites informatique beaucoup plus efficace pour la libido des octets, xslashdot, xgnu.org tout ça quoi.

            Bonne soirée à toi, tu m'as bien fait rire en tout cas

            • [^] # Re: Code dans les posts…

              Posté par . Évalué à 4 (+2/-0). Dernière modification le 09/02/20 à 00:34.

              Tant que je me fais rire moi-même, ça me va, mais dans la philosophie du LL, je partage ma bêtise, et je constate que c'est parfois bien, merci à toi pour ce constat :)

              Accessoirement, je suis assez fier du fait que je ne recule devant aucune facilité quand il s'agit de déconner ;)

            • [^] # Re: Code dans les posts…

              Posté par . Évalué à 1 (+1/-2).

              Mais, je sais pourquoi j'ai été moinssé… j'ai sortie une blague masculine, alors que bon, j'aurais pu jouer avec l'index() aussi, ça aurais été plus neutre.

              • [^] # Re: Code dans les posts…

                Posté par . Évalué à 1 (+0/-0). Dernière modification le 09/02/20 à 00:53.

                En tout cas tu écris des super journaux, tout mon respect
                Bon, je vais voir les news sur xoctects :)

                (il y à des filles qui y vont aussi)

              • [^] # Re: Code dans les posts…

                Posté par . Évalué à 0 (+1/-2). Dernière modification le 09/02/20 à 01:14.

                Non mais ta blague elle n’est pas masculine; Elle va juste dans les deux sens.
                Une fille aurait très bien pu la sortir :)

                C'est chiant ce système de +/- , mais bon on peut pas basher les traits d'humour!
                Surtout que là c'était pas lourd, tout en finesse, tranquille.

                Quoi qu’il en soit, ya un problème de byte quelque part

                • [^] # Re: Code dans les posts…

                  Posté par . Évalué à 3 (+1/-0).

                  En tout cas tu écris des super journaux, tout mon respect

                  Je fais ce que je peux, mais merci.

                  C'est chiant ce système de +/- , mais bon on peut pas basher les traits d'humour!

                  Je pense que la plupart des gens ici ignorent en grande partie le score d'un post (sauf certains scores extrêmes, je dirais, même si je les lis quand même par curiosité perso), donc c'est pas très important.

  • # un peu plus d'infos ?

    Posté par . Évalué à 1 (+0/-0).

    Salut,
    Je pense que ça ne vient pas de ta fonction modification mais celle de sauvegarde dans un tableau
    Sache que je crois déjà avoir eu se problème aussi
    Soit ça vient du chargement dans un tableau soit de la sauvegarde dans le fichier
    As-tu une fonction d'affichage du tableau afin de voir ce qui advient de ton tableau lors de l’exécution de tes fonctions

    Amiralgaby#1847

    • [^] # Re: un peu plus d'infos ?

      Posté par . Évalué à 1 (+1/-1). Dernière modification le 09/02/20 à 00:46.

      Bon il ne veut pas montrer la main, ou bien il à résolue, sans donner de conclusions!

      Par contre, sa font ion, le switch, défaut: pass, là je pense que (freem ne lit pas ça stp) --j
      En cas d'erreur, son tableau décale +1 et fait une entrée "vide".

      Il fait des tests sur un tableau préparé, une faute de saisie, un poil d'octect puis BAM
      Il devrait tester manuelement, sans tableau, ca pourais venir de là aussi

Envoyer un commentaire

Suivre le flux des commentaires

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