Probleme de code en C
Résolu/Fermé
tamaiste
Messages postés
4
Date d'inscription
mercredi 10 octobre 2007
Statut
Membre
Dernière intervention
12 octobre 2007
-
10 oct. 2007 à 21:57
tamaiste Messages postés 4 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 12 octobre 2007 - 12 oct. 2007 à 21:05
tamaiste Messages postés 4 Date d'inscription mercredi 10 octobre 2007 Statut Membre Dernière intervention 12 octobre 2007 - 12 oct. 2007 à 21:05
A voir également:
- Probleme de code en C
- Le code ascii en informatique - Guide
- Code puk bloqué - Guide
- Code de déverrouillage oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
7 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
10 oct. 2007 à 22:05
10 oct. 2007 à 22:05
Salut,
affiche le code complet.
merci
affiche le code complet.
merci
tamaiste
Messages postés
4
Date d'inscription
mercredi 10 octobre 2007
Statut
Membre
Dernière intervention
12 octobre 2007
11 oct. 2007 à 06:36
11 oct. 2007 à 06:36
#include <stdio.h>
struct contact
{
char nom[30];
char prenom[30];
char tel[10];
int numero;
}perso;
char saisie[160];
char confirm[2];
char erase[3];
FILE *f;
void informations()
{
clrscr();
printf("Saississez votre nom :");
scanf("%s" , saisie);
strcpy(perso.nom , saisie);
printf("Saississez votre prenom :");
scanf("%s" , saisie);
strcpy(perso.prenom , saisie);
printf("Saississez votre numero de telephone :");
scanf("%s" , saisie);
strcpy(perso.tel , saisie);
printf("\nVous avez saisi les informations suivantes :");
printf("\n");
printf("\n%s \n%s \n%s",perso.nom,perso.prenom,perso.tel);
printf("\n");
printf("\n");
f=fopen("contacts.txt" , "wb");
printf("\nTaper ok puis Entree pour confirmer votre saisie :");
scanf("%s",confirm);
if(strcmp(confirm,"ok") ==0)
{
fwrite(&perso ,sizeof(perso) , 1 , f);
printf("\n");
printf("Felicitations vous avez bien ete enregistrer !!!");
}
else
{
printf("enregistrement annule...");
}
fclose(f);
menu();
}
void affichage()
{
f=fopen("contacts.txt","rb");
while(!feof(f))
{
fread(&perso , sizeof(perso) , 1 , f);
if(!feof(f))
printf("\n");
printf("\n");
printf("%s %s %s\n\n",perso.nom,perso.prenom,perso.tel);
}
fclose(f);
menu();
}
void menu()
{
char choice;
printf("pour saisir un nouveau contact tapez s :");
printf("pour afficher le repertoire tapez a :");
printf("votre choix :");
scanf("%s",choice);
printf("%s",choice);
switch(choice)
{
case 's' : informations();break;
case 'a' : affichage();break;
default: menu();break;
}
}
int main()
{
menu();
getch();
}
voila le code complet
struct contact
{
char nom[30];
char prenom[30];
char tel[10];
int numero;
}perso;
char saisie[160];
char confirm[2];
char erase[3];
FILE *f;
void informations()
{
clrscr();
printf("Saississez votre nom :");
scanf("%s" , saisie);
strcpy(perso.nom , saisie);
printf("Saississez votre prenom :");
scanf("%s" , saisie);
strcpy(perso.prenom , saisie);
printf("Saississez votre numero de telephone :");
scanf("%s" , saisie);
strcpy(perso.tel , saisie);
printf("\nVous avez saisi les informations suivantes :");
printf("\n");
printf("\n%s \n%s \n%s",perso.nom,perso.prenom,perso.tel);
printf("\n");
printf("\n");
f=fopen("contacts.txt" , "wb");
printf("\nTaper ok puis Entree pour confirmer votre saisie :");
scanf("%s",confirm);
if(strcmp(confirm,"ok") ==0)
{
fwrite(&perso ,sizeof(perso) , 1 , f);
printf("\n");
printf("Felicitations vous avez bien ete enregistrer !!!");
}
else
{
printf("enregistrement annule...");
}
fclose(f);
menu();
}
void affichage()
{
f=fopen("contacts.txt","rb");
while(!feof(f))
{
fread(&perso , sizeof(perso) , 1 , f);
if(!feof(f))
printf("\n");
printf("\n");
printf("%s %s %s\n\n",perso.nom,perso.prenom,perso.tel);
}
fclose(f);
menu();
}
void menu()
{
char choice;
printf("pour saisir un nouveau contact tapez s :");
printf("pour afficher le repertoire tapez a :");
printf("votre choix :");
scanf("%s",choice);
printf("%s",choice);
switch(choice)
{
case 's' : informations();break;
case 'a' : affichage();break;
default: menu();break;
}
}
int main()
{
menu();
getch();
}
voila le code complet
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
11 oct. 2007 à 09:51
11 oct. 2007 à 09:51
Salut,
voici mon opinion,
1. tu as oublié #include <string.h >
2. si on structure le programme, on crée des fonctions pour une tache spécifique. La fonction affichage ne doit faire que l'affichage.
En revanche, l'affichage du menu tu peux le gérer dans main avec une boucle sur le choix
3. il faut ecrire les prototypes de fonctions après les #include
dans ton cas affichage appelle menu, mais menu est défini après l'affichage ce qui engendra un message d'erreur de la part du compilateur
Je suis au boulot et je n'ai pas le temps d'arranger ça.
Si jamais tu ne trouves pas d'aide, je regarderai plus tard.
voici mon opinion,
1. tu as oublié #include <string.h >
2. si on structure le programme, on crée des fonctions pour une tache spécifique. La fonction affichage ne doit faire que l'affichage.
En revanche, l'affichage du menu tu peux le gérer dans main avec une boucle sur le choix
3. il faut ecrire les prototypes de fonctions après les #include
dans ton cas affichage appelle menu, mais menu est défini après l'affichage ce qui engendra un message d'erreur de la part du compilateur
Je suis au boulot et je n'ai pas le temps d'arranger ça.
Si jamais tu ne trouves pas d'aide, je regarderai plus tard.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
mamiemando
Messages postés
33446
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
20 décembre 2024
7 812
11 oct. 2007 à 10:27
11 oct. 2007 à 10:27
Voici déjà un premier jeu de correction qui te permettront au moins de compiler (je n'ai pas testé le programme)
Je te laisse regarder les différences.
Evite a tout prix d'utiliser des variables globales. Je sais que ça alourdit les prototypes de fonction mais c'est très important pour que ton programme soit lisible de ne pas les utiliser. De manière général les variables globales ne devraient jamais être utilisées.
Bonne chance
#include <string.h> #include <stdio.h> struct contact { char nom[30]; char prenom[30]; char tel[10]; int numero; }perso; char saisie[160]; char confirm[2]; char erase[3]; FILE *f; void menu(); void informations() { // clrscr(); // cette fonction n'est pas standard et ne doit donc pas être utilisée. printf("Saississez votre nom :"); scanf("%s" , saisie); strcpy(perso.nom , saisie); printf("Saississez votre prenom :"); scanf("%s" , saisie); strcpy(perso.prenom , saisie); printf("Saississez votre numero de telephone :"); scanf("%s" , saisie); strcpy(perso.tel , saisie); printf("\nVous avez saisi les informations suivantes :"); printf("\n"); printf("\n%s \n%s \n%s",perso.nom,perso.prenom,perso.tel); printf("\n"); printf("\n"); f=fopen("contacts.txt" , "wb"); printf("\nTaper ok puis Entree pour confirmer votre saisie :"); scanf("%s",confirm); if(strcmp(confirm,"ok") ==0) { fwrite(&perso ,sizeof(perso) , 1 , f); printf("\n"); printf("Felicitations vous avez bien ete enregistrer !!!"); } else { printf("enregistrement annule..."); } fclose(f); menu(); } void affichage() { f=fopen("contacts.txt","rb"); while(!feof(f)) { fread(&perso , sizeof(perso) , 1 , f); if(!feof(f)) printf("\n"); printf("\n"); printf("%s %s %s\n\n",perso.nom,perso.prenom,perso.tel); } fclose(f); menu(); } void menu() { char choice; printf("pour saisir un nouveau contact tapez s :"); printf("pour afficher le repertoire tapez a :"); printf("votre choix :"); scanf("%c",&choice); printf("%c",choice); switch(choice) { case 's' : informations();break; case 'a' : affichage();break; default: menu();break; } } int main() { menu(); getchar(); return 0; }
Je te laisse regarder les différences.
Evite a tout prix d'utiliser des variables globales. Je sais que ça alourdit les prototypes de fonction mais c'est très important pour que ton programme soit lisible de ne pas les utiliser. De manière général les variables globales ne devraient jamais être utilisées.
Bonne chance
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
11 oct. 2007 à 11:14
11 oct. 2007 à 11:14
Voic avec quelque modifications.
Un menu de genre
1. Saisie
2. Affichage
3. Quitter
et bien plus parlant que
pour saisir un nouveau contact tapez s :
pour afficher le repertoire tapez a :
Je n'ai pas modifié le prototype des fonctions, donc j'ai laissé les variables globales en place, à toi de modifier les prototypes pour eviter les variables globales
Un menu de genre
1. Saisie
2. Affichage
3. Quitter
et bien plus parlant que
pour saisir un nouveau contact tapez s :
pour afficher le repertoire tapez a :
Je n'ai pas modifié le prototype des fonctions, donc j'ai laissé les variables globales en place, à toi de modifier les prototypes pour eviter les variables globales
#include <stdio.h> #include <string.h> void enregistrement (); void menu (); void affichage ();; struct contact{ char nom[30]; char prenom[30]; char tel[10]; int numero; } perso; char saisie[160]; char confirm[2]; char erase[3]; FILE *f; int main () { int choix = 0; while (choix != 3){ menu (); printf ("\nvotre choix :"); scanf ("%d", &choix); switch (choix){ case 1: enregistrement (); break; case 2: affichage (); break; case 3: printf ("Au revoir !\n"); break; } getchar (); } return 0; } void enregistrement (){ printf ("Saississez votre nom :"); scanf ("%s", saisie); strcpy (perso.nom, saisie); printf ("Saississez votre prenom :"); scanf ("%s", saisie); strcpy (perso.prenom, saisie); printf ("Saississez votre numero de telephone :"); scanf ("%s", saisie); strcpy (perso.tel, saisie); printf ("\nVous avez saisi les informations suivantes : \n"); printf ("\n%s \n%s \n%s\n\n", perso.nom, perso.prenom, perso.tel); f = fopen ("contacts.txt", "ab"); printf ("\nTaper ok puis Entree pour confirmer votre saisie :"); scanf ("%s", confirm); if (strcmp (confirm, "ok") == 0){ fwrite (&perso, sizeof (perso), 1, f); printf ("\nFelicitations vous avez bien ete enregistrer !!!\n\n"); }else{ printf ("enregistrement annule...\n"); } fclose (f); } void affichage (){ f = fopen ("contacts.txt", "rb"); while (!feof (f)){ fread (&perso, sizeof (perso), 1, f); if (!feof (f)) printf ("%s %s %s\n", perso.nom, perso.prenom, perso.tel); } fclose (f); } void menu (){ printf ("1. Saisie\n"); printf ("2. Affichage\n"); printf ("3. Quitter\n"); }
tamaiste
Messages postés
4
Date d'inscription
mercredi 10 octobre 2007
Statut
Membre
Dernière intervention
12 octobre 2007
12 oct. 2007 à 21:05
12 oct. 2007 à 21:05
merci beaucoup tout le monde