Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3047 connectés 

  FORUM HardWare.fr
  Programmation
  C

  problème avec un tableau de structure !!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème avec un tableau de structure !!!

n°2041892
kkny
Posté le 13-12-2010 à 22:09:01  profilanswer
 

bonsoir à tous,
dans mon programme, je veux saisir une liste de données de type structure !
pour une seule saisie, le programme marche à merveille.
le problème c'est qu'au moment où j'introduis une boucle "for" à la fonction saisie....malgré que je n'ai au aucune erreur syntaxique...le programme ne simule pas et une fenêtre nommée "application error" surgit dans laquelle il y a le message suivant :
 
"

Citation :

projetc caused s stack in module projetc.exe at 000:0321. choose close. projetc will close.

"

mood
Publicité
Posté le 13-12-2010 à 22:09:01  profilanswer
 

n°2041897
billgatesa​nonym
Posté le 13-12-2010 à 22:28:01  profilanswer
 

La stack est la pile. Le message indique qu'elle devient corrompue. C'est sûrement dû à un problème classique tél que :
 
- un zéro binaire qui manquerait à la fin d'une chaine de caractères
- un indice de tableau hors des limites
- un scanf qui fait déborder
- une allocation d'un pointeur au lieu d'une allocation d'un buffer,
etc.

n°2041900
kkny
Posté le 13-12-2010 à 22:43:54  profilanswer
 

j'ai pas bien compris ce que vous voulez dire par :
 
1-"un zéro binaire qui manquerait à la fin d'une chaine de caractères".
est ce que je dois ajouter un "\0" à la fin de chaque chaque de caractère ??? je croyais qu'il s'ajoutait tout seul :/
 
2- la limite de la boucle "for" est délimitée par un entier prédéfini précédemment.
 
3-"un scanf qui fait déborder".
le scanf est du genre : " scanf  ("%type",&(nom_structure[i].cham)); "
(le compteur "i" est pour la boucle "for" ).

n°2041902
billgatesa​nonym
Posté le 13-12-2010 à 23:41:38  profilanswer
 

Citation :

1-"un zéro binaire qui manquerait à la fin d'une chaine de caractères".  
est ce que je dois ajouter un "\0" à la fin de chaque chaque de caractère ??? je croyais qu'il s'ajoutait tout seul :/  

Je n'ai pas dit à la fin de chaque caractère mais à la fin de chaque chaine de caractères, et j'ai employé le conditionnel parce que, sans voir le code, il est impossible de le savoir avec certitude. Le zéro binaire de fin de chaine n'est pas forcément présent, cela dépend des circonstances.
 

Citation :

3-"un scanf qui fait déborder".  
le scanf est du genre : " scanf  ("%type",&(nom_structure[ i].cham)); "


Ah, donc il y a un scanf(). Il vaut mieux les éviter et avoir des fgetc() de stdin à la place, ou des fgets(), mais vous n'avez peut-être pas encore appris cela. Un inconvénient du scanf(), est qu'il n'y aucune vérification des paramètres lors de la compilation car les paramètres peuvent avoir n'importe quel type. Un autre inconvénient est que l'utilisateur peut rentrer une chaine de caractères trop longue, par exemple il peut taper "abc" pour un champ défini en char champ[3];, et cela causera un débordement (car la taille de 3 est insuffisante étant donné qu'il faut prévoir une place pour le zéro binaire de fin de chaine).


Message édité par billgatesanonym le 13-12-2010 à 23:46:15

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  problème avec un tableau de structure !!!

 

Sujets relatifs
Problème de HashCode...Problème de hauteur avec <marquee>
problème macro VBA[PHP]Tableau dans les fonctions
a supprimer[Résolu] Problème de masquage d'image - javascript - display none
Problème setSize()Problème de marge et de trait dans menu
Probleme avec un tableau structuréProbleme tableau 2 dimensions + structure en C
Plus de sujets relatifs à : problème avec un tableau de structure !!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR