A voir également:
- [C] fgets ne prend pas un de mes champs
- Word mettre à jour tous les champs ✓ - Forum Word
- Champs calculé tcd formule si - Forum Excel
- Echec mise à jour champs Word ✓ - Forum Word
- Mise à jour des champs dans entête/pied de page ✓ - Forum Word
- Le nom du champ de tableau croisé dynamique n'est pas valide - Forum Excel
7 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
6 janv. 2008 à 13:55
6 janv. 2008 à 13:55
Salut
Tu as fait un char [6] pour le CP, mets plutôt un char[7], et ça devrait marcher.
Si ça ne marche pas, donne le code en entier que je puisse tester.
Cordialement
Tu as fait un char [6] pour le CP, mets plutôt un char[7], et ça devrait marcher.
Si ça ne marche pas, donne le code en entier que je puisse tester.
Cordialement
Re !
En effet, ça fonctionne un peu mieux, mais il me reste un souci maintenant : il me colle l'adresse a la date de naissance.
Un exemple, quand je tape les infos suivantes :
Date de naissance : 06/02/1987
Adresse : 14 La rue de l'arbre
A l'affichage j'ai :
Date de naissance : 06/02/198714 La rue de l'arbre
Adresse : 14 La rue de l'arbre
C'est à ne plus rien y comprendre ...
En effet, ça fonctionne un peu mieux, mais il me reste un souci maintenant : il me colle l'adresse a la date de naissance.
Un exemple, quand je tape les infos suivantes :
Date de naissance : 06/02/1987
Adresse : 14 La rue de l'arbre
A l'affichage j'ai :
Date de naissance : 06/02/198714 La rue de l'arbre
Adresse : 14 La rue de l'arbre
C'est à ne plus rien y comprendre ...
Ah, j'ai trouve : j'ai mis 11 pour la date de naissance, car la date sous format jj/mm/aaaa contient 10 caractères ...
Merci de l'aide ! J'aimerais comprendre pourquoi ça me fait ça par contre ...
Merci de l'aide ! J'aimerais comprendre pourquoi ça me fait ça par contre ...
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
6 janv. 2008 à 18:31
6 janv. 2008 à 18:31
Ah, tu stockes la date comme ça, dans ce cas là, je te conseille de mettre date de naisse à 12, sinon tu vas avoir un problème avec l'adresse.
Alors, explication :
Tu fais, fgets(...,stdin), ainsi l'utilisateur tape au clavier et valider, la chaîne va donc stocker le '\n' en fin de chaîne. Et la fonction, va rajouter le '\0' pour dire que c'est la fin de la chaîne.
Au final, tu as ta chaîne avec \n et \0 en fin. Il faut donc rajouter deux caractères et non un. D'où le CP[5+2] et la date de naissance [12+2].
Conséquence si tu mets +1 au lieu de +2 :
Le \0 va déborder, et comme tu as une structure, et que les variables sont contiguës, le \0 va se trouver en début de chaîne suivante.
Ainsi, la variable suivante n'apparaitra pas à l'écran car son premier caractère sera \0. Tu es dans ce cas obliger de refaire un fgets de la variable modifier.
N'hésite pas à poser des questions, si je n'ai pas été clair.
Cordialement
Alors, explication :
Tu fais, fgets(...,stdin), ainsi l'utilisateur tape au clavier et valider, la chaîne va donc stocker le '\n' en fin de chaîne. Et la fonction, va rajouter le '\0' pour dire que c'est la fin de la chaîne.
Au final, tu as ta chaîne avec \n et \0 en fin. Il faut donc rajouter deux caractères et non un. D'où le CP[5+2] et la date de naissance [12+2].
Conséquence si tu mets +1 au lieu de +2 :
Le \0 va déborder, et comme tu as une structure, et que les variables sont contiguës, le \0 va se trouver en début de chaîne suivante.
Ainsi, la variable suivante n'apparaitra pas à l'écran car son premier caractère sera \0. Tu es dans ce cas obliger de refaire un fgets de la variable modifier.
N'hésite pas à poser des questions, si je n'ai pas été clair.
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est bon, j'ai tout compris !
Merci bien, je n'étais pas au courant du fait que les variables étaient contigues dans une structure !
Merci bien, je n'étais pas au courant du fait que les variables étaient contigues dans une structure !
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
7 janv. 2008 à 18:33
7 janv. 2008 à 18:33
Salut,
Attention, même si souvent les champs sont contiguës, la norme ISO ne l'impose pas, et donc ils ne le sont pas forcément.
Attention, même si souvent les champs sont contiguës, la norme ISO ne l'impose pas, et donc ils ne le sont pas forcément.