• 0

كيف أصحح خطأ في لغة c

السلام عليكم عندي مشكلة هنا يقول لي خطأ ، ما هو سبب الخطأ و ماذا على أن أفعل لكي يقرأ لي

أرجو المساعدة جزاكم الله كل خيير

c.png

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يرجى كتابة الشيفرة كاملة. أو ذكر رسالة الخطأ.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ 37 دقائق مضت قال سعيد:

يرجى كتابة الشيفرة كاملة. أو ذكر رسالة الخطأ.

#include<stdio.h>
#include<stdlib.h>
struct etudiants{
int num;
char nom[100];
char prenom[100];
char filier[50];
};
struct etudiants etud;
/*---------fonction de chercher----*/
int rech(int numrech)
{
    FILE*F;
    F=fopen("etudiants.txt","r");
    do{
        fscanf(F,"%d ; %s; %s; %s",&etud.num,etud.nom,etud.prenom,etud.filier);
        if (etud.num==numrech)
        {
            fclose(F);
            return 1;
        }
    }
    while(!feof(F));
    fclose(F);
    return -1;
}
/*----ajoute---*/
void ajouteretudiant()
{
    int numrech;
    FILE*F;
    F=fopen("etudiants.txt","a");
    printf("\n entre le numero du nouveau etudiant:");
    scanf("%d",&numrech);
    fflush(stdin);
    if (rech(numrech)== -1)
    {
        etud.num=numrech;
        printf("\n entre le nom :");
        gets(etud.nom);
        fflush(stdin);
        printf("\n entre le prenom :");
        gets(etud.prenom);
        fflush(stdin);
        printf("\n entre la filier :");
        gets(etud.filier);
        fflush(stdin);
        fprintf(F,"%d ;%s ;%s %s\n",etud.num,etud.nom,etud.prenom,etud.filier);
        fflush(stdin);
        
    }
    else
    {
        printf("\n cet etudiant exsiste deja");
        
    }
close(F);
}
/*---------recherche et affichage------*/
void recherche()
{
    int numR;
    printf("entrer le numero d'etudiant a rechercher ");
    scanf("%d",&numR);
    FILE*F;
    F=fopen("etudiants.txt","r");
    do{
        fscanf(F,"%d;%s;%S;%s",&etud.num,etud.nom,etud.prenom,etud.filier);
        if(numR==etud.num){
            printf("-----information dur le stagiaire:-------\n\n");
            printf("numero : %d\n",etud.num);
                printf("nom : %s\n",etud.nom);
                printf("prenom : %s\n",etud.prenom);
                printf("filier : %s\n",etud.filier);
        }
    }
    while(!feof(F));
    fclose(F);
    
    
}
/*------- suppression---*/
void supprimeretudiant()
{
    char rep;
    int numrech;
    printf("entrez le numero d'etudiant a supprimer :");
    scanf("%d",&numrech);
    fflush(stdin);
    if(rech(numrech)==1)
    {
        printf("\n volez vous vraimment supprimer o/n ?");
        scanf("%c",&rep);
        fflush(stdin);
        if( rep=='o'|| rep=='O')
        {
            FILE*Fich,*F;
            F=fopen("etudiants.txt","r");
            Fich=fopen("tempetudiant.txt","a");
            do{
                fscnaf(F,"%d;%s;%s;%S",&etud.num,etud.nom,etud.prenom,etud.filier);
                if(numrech !=etud.num)
                {
                    fprintf(Fich,"%d;%s;%s;%s \n\n",etud.num,etud.nom,etud.prenom,etud.filier);
                    
                }}
                while(!feof(F));
                fclose(F);
                remove("etudiants.txt");
                rename("tempetudiant.txt","etudiants.txt");
                printf("suppression effectue eve succees");
            }
            
        }
        else{
            printf("\n ce numero d'etudiant n'exsite pas");
        }
    }
    /*--------procedure modifier etudiants-------*/
    void modifieretudiant()
    {
        FILE*F,*Fich; 
        int num,i;
        char rep;
        printf("\n entre le numero de l'etudiant a modifier :");
        scanf("%d",&num);
        fflush(stdin);
        if(rech(num)==1)
        {
            printf("\n voulez vous vraimment modifier o/n ?");
            scanf("%c",&rep);
            fflush(stdin);
            if(rep=='o'||rep=='O')
            {
                F=fopen("etudiants.txt","r");
                Fich=fopen("tempetudiant.txt","a");
                do{
                    fscanf(F,"%d;%s;%s;%s",&etud.num,etud.nom,etud.prenom,etud.filier);
                    if(num==etud.num)
                    {
                        etud.num=num;
                        printf("\n entre le nouveau nom :");
                        gets(etud.nom);
                        printf("\n entre le nouveau prenom :");
                        gets(etud.prenom);
                        printf("entre le nouvelle filier :");
                        gets(etud.filier);
                        printf("\n la modification a reussi");
                    
                    }
                    fprintf(F,"%d;%s;%s;%s\n\n",etud.num,etud.nom,etud.prenom,etud.filier);
                    
                }
                while(!feof(F));
                fclose(F);
                fclode(Fich);
                remove("etudiants.txt");
                rename("tempetudiant.txt" , "etudiants.txt");    
            }
            else{
                printf("\n le modification a et annule \n");    
            }        
        }
        /*else {
            printf("\n ce numero d'etudiant n'existe pas \n");*/
        }
        
        /*-------procedure afficher--------*/
        void affichertt()
        {
            FILE*F;
            F=fopen("etudiants.txt","r");
            printf("la liste des etudiants est :\n\n");
            do{
            fscanf(F,"%d;%s;%s;%s",&etud.num,etud.nom,etud.prenom,etud.filier);
            fflush(stdin);
            printf("%d;%s;%s;%s\n\n",etud.num,etud.nom,etud.prenom,etud.filier);
            }
            while(!feof(F));
            fclode(F);
                    }
                    /*-------menu principale----*/
                    void main(){
                        int choix; char rep;
                        do{
                            system("cls");
                            printf("**********MENU*******\n");
                            printf("1-ajouter un etidiant \n");
                            printf("2-rechercher unetudiant\n");
                            printf("3-supprimer un etudiant\n");
                            printf("4-modifier un etudiant\n");
                            printf("affiche tous le etudiants\n");
                            printf("6-quitter\n\n");
                            do{
                                printf("\n -etre votre choix :");
                                scanf("%d",&choix);
                            }
                            while(choix<1 || choix>6);
                            switch(choix)
                            {
                                case 1:ajouteretudiant;
                                break;
                                case 2:recherche();
                                break;
                                case 3:supprimeretudiant();
                                break;
                                case 4:modifieretudiant();
                                break;
                                case 5:affichertt();
                                break;
                                case 6:break;
                                
                            }
                            printf("\n voulez-vous continuez o/n :");
                            scanf("%s",&rep);
                            fflush(stdin);
                        }
                        while(rep=='o'||rep=='O');}
                    

    

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

تستخدم كودًا خطرًا في هذا البرنامج! لا أدري لماذا تستخدم gets في حين انّه يمكنك استبدالها بسهولة بـ fgets مع تعديل بسيط على الوسائط الممرّرة لها. هذا بالإضافة إلى استخدامك للدالة close بدلًا من fclose، والقليل من الأخطاء الإملائية.

على العموم جرّب البرنامج التالي:

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

struct etudiants{
    int num;
    char nom[100];
    char prenom[100];
    char filier[50];
};

struct etudiants etud;
/*---------fonction de chercher----*/
int rech(int numrech)
{
    FILE*F;
    F=fopen("etudiants.txt","r");
    do{
        fscanf(F,"%d ; %s; %s; %s",&etud.num,etud.nom,etud.prenom,etud.filier);
        if (etud.num==numrech)
        {
            fclose(F);
            return 1;
        }
    }
    while(!feof(F));
    fclose(F);
    return -1;
}
/*----ajoute---*/
void ajouteretudiant()
{
    int numrech;
    FILE*F;
    F=fopen("etudiants.txt","a");
    printf("\n entre le numero du nouveau etudiant:");
    scanf("%d",&numrech);
    fflush(stdin);
    if (rech(numrech)== -1)
    {
        etud.num=numrech;
        printf("\n entre le nom :");
        fgets(etud.nom,255,stdin);
        fflush(stdin);
        printf("\n entre le prenom :");
        fgets(etud.prenom,255,stdin);
        fflush(stdin);
        printf("\n entre la filier :");
        fgets(etud.filier,255,stdin);
        fflush(stdin);
        fprintf(F,"%d ;%s ;%s %s\n",etud.num,etud.nom,etud.prenom,etud.filier);
        fflush(stdin);
        
    }
    else
    {
        printf("\n cet etudiant exsiste deja");
        
    }
    fclose(F);
}
/*---------recherche et affichage------*/
void recherche()
{
    int numR;
    printf("entrer le numero d'etudiant a rechercher ");
    scanf("%d",&numR);
    FILE*F;
    F=fopen("etudiants.txt","r");
    do{
        fscanf(F,"%d;%s;%S;%s",&etud.num,etud.nom,etud.prenom,etud.filier);
        if(numR==etud.num){
            printf("-----information dur le stagiaire:-------\n\n");
            printf("numero : %d\n",etud.num);
                printf("nom : %s\n",etud.nom);
                printf("prenom : %s\n",etud.prenom);
                printf("filier : %s\n",etud.filier);
        }
    }
    while(!feof(F));
    fclose(F);
    
    
}
/*------- suppression---*/
void supprimeretudiant()
{
    char rep;
    int numrech;
    printf("entrez le numero d'etudiant a supprimer :");
    scanf("%d",&numrech);
    fflush(stdin);
    if(rech(numrech)==1)
    {
        printf("\n volez vous vraimment supprimer o/n ?");
        scanf("%c",&rep);
        fflush(stdin);
        if( rep=='o'|| rep=='O')
        {
            FILE*Fich,*F;
            F=fopen("etudiants.txt","r");
            Fich=fopen("tempetudiant.txt","a");
            do{
                fscanf(F,"%d;%s;%s;%S",&etud.num,etud.nom,etud.prenom,etud.filier);
                if(numrech !=etud.num)
                {
                    fprintf(Fich,"%d;%s;%s;%s \n\n",etud.num,etud.nom,etud.prenom,etud.filier);
                    
                }}
                while(!feof(F));
                fclose(F);
                remove("etudiants.txt");
                rename("tempetudiant.txt","etudiants.txt");
                printf("suppression effectue eve succees");
            }
            
        }
        else{
            printf("\n ce numero d'etudiant n'exsite pas");
        }
    }
    /*--------procedure modifier etudiants-------*/
    void modifieretudiant()
    {
        FILE*F,*Fich; 
        int num,i;
        char rep;
        printf("\n entre le numero de l'etudiant a modifier :");
        scanf("%d",&num);
        fflush(stdin);
        if(rech(num)==1)
        {
            printf("\n voulez vous vraimment modifier o/n ?");
            scanf("%c",&rep);
            fflush(stdin);
            if(rep=='o'||rep=='O')
            {
                F=fopen("etudiants.txt","r");
                Fich=fopen("tempetudiant.txt","a");
                do{
                    fscanf(F,"%d;%s;%s;%s",&etud.num,etud.nom,etud.prenom,etud.filier);
                    if(num==etud.num)
                    {
                        etud.num=num;
                        printf("\n entre le nouveau nom :");
                        fgets(etud.nom, 255, stdin);
                        printf("\n entre le nouveau prenom :");
                        fgets(etud.prenom,255, stdin);
                        printf("entre le nouvelle filier :");
                        fgets(etud.filier,255,stdin);
                        printf("\n la modification a reussi");
                    
                    }
                    fprintf(F,"%d;%s;%s;%s\n\n",etud.num,etud.nom,etud.prenom,etud.filier);
                    
                }
                while(!feof(F));
                fclose(F);
                fclose(Fich);
                remove("etudiants.txt");
                rename("tempetudiant.txt" , "etudiants.txt");    
            }
            else{
                printf("\n le modification a et annule \n");    
            }        
        }
        /*else {
            printf("\n ce numero d'etudiant n'existe pas \n");*/
        }
        
        /*-------procedure afficher--------*/
        void affichertt()
        {
            FILE*F;
            F=fopen("etudiants.txt","r");
            printf("la liste des etudiants est :\n\n");
            do{
            fscanf(F,"%d;%s;%s;%s",&etud.num,etud.nom,etud.prenom,etud.filier);
            fflush(stdin);
            printf("%d;%s;%s;%s\n\n",etud.num,etud.nom,etud.prenom,etud.filier);
            }
            while(!feof(F));
            fclose(F);
                    }
                    /*-------menu principale----*/
                    int main(){
                        int choix; char rep;
                        do{
                            system("cls");
                            printf("**********MENU*******\n");
                            printf("1-ajouter un etidiant \n");
                            printf("2-rechercher unetudiant\n");
                            printf("3-supprimer un etudiant\n");
                            printf("4-modifier un etudiant\n");
                            printf("affiche tous le etudiants\n");
                            printf("6-quitter\n\n");
                            do{
                                printf("\n -etre votre choix :");
                                scanf("%d",&choix);
                            }
                            while(choix<1 || choix>6);
                            switch(choix)
                            {
                                case 1:ajouteretudiant;
                                break;
                                case 2:recherche();
                                break;
                                case 3:supprimeretudiant();
                                break;
                                case 4:modifieretudiant();
                                break;
                                case 5:affichertt();
                                break;
                                case 6:break;
                                
                            }
                            printf("\n voulez-vous continuez o/n :");
                            scanf("%s",&rep);
                            fflush(stdin);
                        }
                        while(rep=='o'||rep=='O');}

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن