Langage C
lamou23
Messages postés
178
Date d'inscription
Statut
Membre
Dernière intervention
-
tatou_38 Messages postés 1937 Date d'inscription Statut Membre Dernière intervention -
tatou_38 Messages postés 1937 Date d'inscription Statut Membre Dernière intervention -
salut
je voudrai bien que quelsu'un me corrige cet exo qui doit etre résolu en utilisant les fichiers:
Soit un fichier « etudiant.dat » contenant les noms, prénoms et les moyennes générales de tous les étudiants de l'Université d'Alger « Dely
Brahim ».
Écrire un programme « C » qui contient une fonction qui reçoit en paramètres le nom et le prénom d'un étudiant et retourne sa moyenne.
Écrire un 2ème programme « C » qui contient une fonction qui reçoit en paramètres le nom d'un étudiant et retourne son prénom.
N.B
*******************************************************
#include <cstdlib>
#include <iostream>
#include<stdio.h>
#include<string.h>
char moyenne (char* a,char* b)
{
FILE *fpt;
char c;
char* s1="";
char* s2="";
char* s3="";
char* s4="";
fpt= fopen("etudiant.dat","r");
if(fpt == NULL)
{
printf("Impossible d'ouvrir le fichier %s\n");
exit(1);
}
while (!feof(fpt))
{
c=getc(fpt);
while(c!='\t')
{s4="c";
strcat(s1,s4);
}
c=getc(fpt);
while (c=='') c=getc(fpt);
while((c=getc(fpt)!='/t'))
{
s4="c";
strcat(s2,s4);
}
c=getc(fpt);
while(c='') c=getc(fpt);
while((c=getc(fpt)!='/t'))
{
s4="c";
strcat(s3,s4);
}
if (strcmp(s1,a)==0)
{
if (strcmp(s2,b)==0)
{printf("la moyenne de l'etudiant est:/t%s",s3);
break;}
}
c=getc(fpt);
}
}
int main()
{
char* s1;
char* s2;
printf ("veuillez saisir le nom de l'etudiant ");
scanf("%s",s1);
printf ("veuillez saisir le prenom de l'etudiant ");
scanf("%s",s2);
system("PAUSE");
moyenne(s1,s2);
return EXIT_SUCCESS;
}
**********************************************************
merci
je voudrai bien que quelsu'un me corrige cet exo qui doit etre résolu en utilisant les fichiers:
Soit un fichier « etudiant.dat » contenant les noms, prénoms et les moyennes générales de tous les étudiants de l'Université d'Alger « Dely
Brahim ».
Écrire un programme « C » qui contient une fonction qui reçoit en paramètres le nom et le prénom d'un étudiant et retourne sa moyenne.
Écrire un 2ème programme « C » qui contient une fonction qui reçoit en paramètres le nom d'un étudiant et retourne son prénom.
N.B
*******************************************************
#include <cstdlib>
#include <iostream>
#include<stdio.h>
#include<string.h>
char moyenne (char* a,char* b)
{
FILE *fpt;
char c;
char* s1="";
char* s2="";
char* s3="";
char* s4="";
fpt= fopen("etudiant.dat","r");
if(fpt == NULL)
{
printf("Impossible d'ouvrir le fichier %s\n");
exit(1);
}
while (!feof(fpt))
{
c=getc(fpt);
while(c!='\t')
{s4="c";
strcat(s1,s4);
}
c=getc(fpt);
while (c=='') c=getc(fpt);
while((c=getc(fpt)!='/t'))
{
s4="c";
strcat(s2,s4);
}
c=getc(fpt);
while(c='') c=getc(fpt);
while((c=getc(fpt)!='/t'))
{
s4="c";
strcat(s3,s4);
}
if (strcmp(s1,a)==0)
{
if (strcmp(s2,b)==0)
{printf("la moyenne de l'etudiant est:/t%s",s3);
break;}
}
c=getc(fpt);
}
}
int main()
{
char* s1;
char* s2;
printf ("veuillez saisir le nom de l'etudiant ");
scanf("%s",s1);
printf ("veuillez saisir le prenom de l'etudiant ");
scanf("%s",s2);
system("PAUSE");
moyenne(s1,s2);
return EXIT_SUCCESS;
}
**********************************************************
merci
A voir également:
- Langage C
- Langage ascii - Guide
- Langage binaire - Guide
- Pascal langage - Télécharger - Édition & Programmation
- Langage visual basic - Télécharger - Langages
- Langage basic gratuit - Télécharger - Édition & Programmation
2 réponses
Bonjour,
Je vois plusieurs problèmes dans ton code :
-tu ne lis pas ton fichier : voir
si tu ne lis pas le fichier et ne met pas la lecture dans une variable (ici maVar) tu ne peut pas travailler dessus,
-les fonction de chaines de caractere (strcat,strcmp, ...) ne sont uniquement pour les chaines statiques il me semble.
-dans tes saisies (s1 s2 ...) tu n'alloue pas de memoire pour stocker la saisie dynamique: voir
en esperant t'avoir un minimum aidé.
Je vois plusieurs problèmes dans ton code :
-tu ne lis pas ton fichier : voir
fread(&maVar,sizeof(TypeMaVar),1,fpt);
si tu ne lis pas le fichier et ne met pas la lecture dans une variable (ici maVar) tu ne peut pas travailler dessus,
-les fonction de chaines de caractere (strcat,strcmp, ...) ne sont uniquement pour les chaines statiques il me semble.
-dans tes saisies (s1 s2 ...) tu n'alloue pas de memoire pour stocker la saisie dynamique: voir
s1=(char*)malloc(sizeof(char));
en esperant t'avoir un minimum aidé.
if (strcmp(s1,a)==0) {}
==> maladroit, tu peux écrire :
if (!strcmp(s1,a)) {}
char* s1="";
==> plantage assuré, car tu initialises le pointeur s1 par l'adresse d'une chaîne vide (un seul octet nul). A l'utilisation, ce que tu va mettre dedans va écraser d'autres chose, d'où éffets de bords plus ou moins catastrophiques.
==> maladroit, tu peux écrire :
if (!strcmp(s1,a)) {}
char* s1="";
==> plantage assuré, car tu initialises le pointeur s1 par l'adresse d'une chaîne vide (un seul octet nul). A l'utilisation, ce que tu va mettre dedans va écraser d'autres chose, d'où éffets de bords plus ou moins catastrophiques.