Partage
  • Partager sur Facebook
  • Partager sur Twitter

fonction rename ne fonctionne pas

    14 juin 2019 à 15:44:55

    Bonjour, je fais un projet de gestion de note en c, j'ai fais une fonction qui permet de modifier une ligne d'un fichier cependant, je ne comprends pas pourquoi la fonction rename présente à la toute fin de mon programme qui doit renommer mon fichier temp en fichier groupe ne fonctionne pas. Merci beaucoup !! Mes fonctions nettoyage choix et menu fonctionne correctement.

    #include <stdio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include <conio.h>
    #include "CHOIX.h"
    #include "NETTOYAGE.h"
    #include "MENU.h"
    
    
    void MODIFIER(void)
    
    {
        float note[10];
        FILE *p;
        FILE *temp;
        int n,i;
        char NOM[20], groupe[10], fin[5]=".txt", ligne[100]= {0}, ligne2[100]= {0}, notecar [10][50]= {0};
        char *token;
        int compare, test, nbnote=0;
    
    
        printf("Donnez votre classe\n");
    
        fflush(stdin);
        gets(groupe);
        strcat(groupe,fin);
    
        printf("Modifier des notes? O/N\n");
    
        while(CHOIX()=='O')
        {
            system("cls");
    
            p=fopen(groupe, "r");
            if(p==NULL)
            {
                printf("erreur, groupe innexistant");
                MENU();
            }
            else
            {
                printf("\nSaisir le nom de l'eleve : \n");
                fflush(stdin);
                gets(NOM);
                NETTOYAGE(NOM);
                do
                {
                    fgets(ligne, 100, p);
                    printf("La ligne est : %s ", ligne);
                    strcpy(ligne2, ligne);
                    temp=fopen("TEMP.txt", "a");
                    token = strtok(ligne, ";"); //séparation de la chaine
                    i=0;
                    while(token != NULL)
                    {
    
                        strcpy(notecar[i], token);//copie de token dans le tableau note
                        //printf("le token est : %s\n", token);
                        i++;
                        token = strtok(NULL, ";");
                    }
    
                    compare=strcmp(notecar[0], NOM);
    
                    if(temp==NULL)
                    {
                        printf("erreur");
                    }
                    else
                    {
                        if (compare!=0)
                        {
                             fprintf(temp, ligne2);
                            //fprintf(temp, "1 chellooou\n");
    
                        }
                    //fprintf(temp, "2 bizarrre\n");
    
                    }
    
    
                    //printf("notecar[0] = %s", notecar[0]);
                    //fprintf(temp, "3wtttfff\n");
                }
                while(compare!=0 && !feof(p));
    
    
    
                if (!compare)
                {
                    i=0;
                    test=strcmp(notecar[0], "\0");
                    printf("\nnotes de l'eleve : \n\n");
                    while(test!=0)
                    {
                        note[i]=atof(notecar[i+1]);
                        printf("note %i = %.2f\n", i+1, note[i]);
                        i++;
                        test=strcmp(notecar[i+1], "\0");
                        nbnote=nbnote+1;
                    }
    
                    printf("\n Saisir le nv nombre de note de cette eleve : \n");
                    scanf(" %d", &n);
    
                    for(i=0; i<n; i++)
                    {
                        printf("Saisir la nouvelle note n.%d : ", i+1);
                        scanf(" %f", &note[i]);
    
                        while(note[i]<0||note[i]>20)
                        {
                            printf("\n\n\t\t\t!!attention les notes doivent etre comprise entre 0 et 20!!\n\n");
                            printf("Saisir la note n.%d : ", i+1);
                            scanf(" %f", &note[i]);
                        }
                    }
    
                    fprintf(temp, "%s;", NOM);
                    for(i=0; i<n; i++)
                    {
                        fprintf(temp, "%f;", note[i]);
                    }
                    fprintf(temp, "\n");
    
                    while (!feof(p))
                    {
                        fgets(ligne, 100, p);
                        //printf("\n\nLa ligne der est %s", ligne);
                        fprintf(temp, ligne);
                    }
                    fprintf(temp, "\n");
                }
                else
                {
                    printf("eleve innexistant, appuyer sur n'importe quelle touche pour continuer");
                    getch();
                    system("cls");
                    MENU();
                }
            }
            //printf(" groupe = %s", groupe);
            fclose(p);
            fclose(temp);
            remove(groupe);
            rename("TEMP", groupe);
            
                printf("TEST");
                getch();
                printf("\nSaisir les notes d'un nouvel eleve? O/N\n");
      }



    • Partager sur Facebook
    • Partager sur Twitter
      14 juin 2019 à 16:04:36

      Bonjour,

      La fonction a une quinzaine de variables et 140 lignes. Cela décourage sa lecture.

      • Partager sur Facebook
      • Partager sur Twitter
        14 juin 2019 à 16:35:59

        C'est TEMP ou TEMP.txt ?
        • Partager sur Facebook
        • Partager sur Twitter

        fonction rename ne fonctionne pas

        × 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