[C] pourquoi n'attend-il pas les données?
Fermé
LunaSev
Messages postés
9
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
24 mai 2007
-
18 mai 2007 à 14:57
LunaSev Messages postés 9 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 24 mai 2007 - 19 mai 2007 à 10:41
LunaSev Messages postés 9 Date d'inscription mercredi 4 avril 2007 Statut Membre Dernière intervention 24 mai 2007 - 19 mai 2007 à 10:41
A voir également:
- [C] pourquoi n'attend-il pas les données?
- Effacer les données de navigation - Guide
- Pourquoi effacer les données d'une application - Guide
- Comment sauvegarder toutes les données de mon téléphone - Guide
- Reinstaller windows sans perte de données - Guide
- Tnt base de données vide ✓ - Forum TNT / Satellite / Réception
4 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
18 mai 2007 à 15:34
18 mai 2007 à 15:34
Salut,
Ca marche si tu mets
Ca marche si tu mets
if (menu == 49)ou
if (menu == '1')?!
dubcek
Messages postés
18758
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
24 décembre 2024
5 623
18 mai 2007 à 15:54
18 mai 2007 à 15:54
Comme le fait remarquer lami20j, tu lis un caractère et non pas un chiffre.
après le scanf il faudrait utiliser atoi pour convertir d'ascii en int.
après le scanf il faudrait utiliser atoi pour convertir d'ascii en int.
LunaSev
Messages postés
9
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
24 mai 2007
18 mai 2007 à 17:42
18 mai 2007 à 17:42
quelle erreur stupide!
j'ai changé le format de "menu" en int, puis j'ai essayé avec menu==49 et enfin avec menu=='1', ça ne marche pas mieux qu'avant...
mais c'est déjà une erreur de moins!
merci, j'espère que quelqu'un va trouver!
j'ai changé le format de "menu" en int, puis j'ai essayé avec menu==49 et enfin avec menu=='1', ça ne marche pas mieux qu'avant...
mais c'est déjà une erreur de moins!
merci, j'espère que quelqu'un va trouver!
LunaSev
Messages postés
9
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
24 mai 2007
19 mai 2007 à 09:16
19 mai 2007 à 09:16
Pour ceux que ça pourrait interesser, en mettant un
getchar();avant
printf("Nom : ");, ça marche.
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
19 mai 2007 à 09:32
19 mai 2007 à 09:32
Salut,
Oui, c'est vrai que ça marche, toutefois pour être cohérent dans ton programme il faut plutôt la mettre dans la fonction fmenu pour la simple raison que c'est après scanf("%c",&a); qu'un caractère traîne
Oui, c'est vrai que ça marche, toutefois pour être cohérent dans ton programme il faut plutôt la mettre dans la fonction fmenu pour la simple raison que c'est après scanf("%c",&a); qu'un caractère traîne
char fmenu() { char a; printf("\nVoulez-vous : \n"); printf("1. Ajouter une personne?\n"); printf("2. Supprimer une personne?\n"); printf("3. Consulter la liste des personnes?\n"); printf("4. Chercher une personne (par nom, prenom, identifiant)?\n"); printf("5. Retourner l'age d'une personne?\n"); printf("6. Modifier les donnees d'une personne?\n"); printf("7. Trier la liste des personnes (selon nom, prenom, identifiant, date de naissance, nb enfant) ?\n"); scanf("%c",&a); getchar(); return a; }
LunaSev
Messages postés
9
Date d'inscription
mercredi 4 avril 2007
Statut
Membre
Dernière intervention
24 mai 2007
19 mai 2007 à 10:41
19 mai 2007 à 10:41
Je viens de me rendre compte que ça ne marche pas, car les données entrées au clavier ne sont pas enregistrées au bon endroit.
j'ai essayé ton idée, lami (merci, d'ailleurs), mais ça ne marche pas plus (pour l'enregistrement des données, sinon, ça attend bien les données quand il le faut).
J'ai l'impression de revenir au point de départ... super!
edit : voilà mon programme modifié (juste les fonctions interessantes et le programme principal):
j'ai essayé ton idée, lami (merci, d'ailleurs), mais ça ne marche pas plus (pour l'enregistrement des données, sinon, ça attend bien les données quand il le faut).
J'ai l'impression de revenir au point de départ... super!
edit : voilà mon programme modifié (juste les fonctions interessantes et le programme principal):
int fmenu() { int a; printf("\nVoulez-vous : \n"); printf("0. Ne rien faire\n"); printf("1. Ajouter une personne?\n"); printf("2. Supprimer une personne?\n"); printf("3. Consulter la liste des personnes?\n"); printf("4. Chercher une personne (par nom, prenom, identifiant)?\n"); printf("5. Retourner l'age d'une personne?\n"); printf("6. Modifier les donnees d'une personne?\n"); printf("7. Trier la liste des personnes (selon nom, prenom, identifiant, date de naissance, nb enfant) ?\n"); scanf("%d",&a); getchar(); return a; } void insererPersonne(sPersonne personne) { FILE * entree; entree = fopen("liste.txt","a+t"); // getchar(); printf("NOM : "); gets(personne.Nom); printf("PRENOM : "); gets(personne.Prenom); printf("SEXE : "); gets(personne.Sexe); printf("NAISSANCE\n"); printf("JOUR : "); scanf("%d",&personne.Date.Jour); getchar(); printf("MOIS : "); scanf("%d",&personne.Date.Mois); getchar(); printf("ANNEE : "); scanf("%d",&personne.Date.Annee); getchar(); printf("IDENTIFIANT : "); gets(personne.Ident); printf("NOMBRE ENFANT : "); scanf("%d",&personne.nbEnfant); getchar(); fwrite(&personne, sizeof(personne),1,entree); fclose(entree); } int main() { int menu; char continu; int choix; NOEUD* debut; debut = initialiser(); sPersonne personne; do { menu=fmenu(); switch (menu) { case 0 : break; case 1 : insererPersonne(personne); break; case 2 : break; case 3 : break; case 4 : break; case 5 : break; case 6 : break; case 7 : break; default : break; } printf("Voulez-vous continuer? (O pour oui, N pour non)\n"); scanf("%c",&continu); if (continu == 'O') menu=fmenu(); } while (continu == 'O'); // affichage a l'ecran printf("\nNOM : %s",personne.Nom); printf("\nPRENOM : %s",personne.Prenom); printf("\nSEXE : %s",personne.Sexe); printf("\nNAISSANCE"); printf("\nJOUR : %d",personne.Date.Jour); printf("\nMOIS : %d",personne.Date.Mois); printf("\nANNEE : %d",personne.Date.Annee); printf("\nIDENTIFIANT : %s",personne.Ident); printf("\nNOMBRE ENFANT : %d",personne.nbEnfant); //debut = insererEnTete(debut,personne); system("PAUSE"); }