résoudre un débug

Le
programmation
Bonjour,

Lorsque le lance l'exécution avec débogage du mon programme C. J'ai
le debug suivant:

Run-Time Check Failure #2 - Stack around the variable 'fichier' was
corrupted.

Que signifie ceci et comment la résoudre ?

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
nico
Le #20438521
programmation wrote:
Bonjour,

Lorsque le lance l'exécution avec débogage du mon programme C. J'ai
le debug suivant:

Run-Time Check Failure #2 - Stack around the variable 'fichier' was
corrupted.

Que signifie ceci et comment la résoudre ?



qu'il y a un dépassement mémoire sur cette variable
faire du pas-à-pas en affichant la valeur de la variable (et des autres)
et en voyant à quel moment ça déconne
programmation
Le #20438761
Voici le code de la fonction:
void creer_fichier(char attribut[20],char valeur[20],char nom_table
[20])
{
FILE *fp;
char fichier[20];
strcpy(fichier,valeur);
strcat(fichier,".txt");
fp=fopen(fichier,"w");

if(!fp)
{
printf("Probleme d'ouverture");
exit(0);
}

connect_fichier(attribut,valeur,fp,nom_table);
fclose(fp);
}

Lorsque je fais le débogage, le curseur jaune se pointe sur le dernier
accolade fermant de ce code.
marc
Le #20439721
programmation a écrit :

Lorsque je fais le débogage, le curseur jaune se pointe sur le dernier
accolade fermant de ce code.



Il faut mettre un/des breakpoints bien sûr.
Et on ne passe jamais de tableaux de chars avec taille définie en
paramètres de fonctions, mais par pointeur..
Bertrand Lenoir-Welter
Le #20440101
Le fait de passer des tableaux formatés en argument à la fonction n'a
aucun sens. Lorsque vous faites strcpy(fichier,valeur) en fait vous
copiez un truc indéfini dans votre variable locale, et forcément ça
déborde en cherchant le zéro terminal. Au dépilement (dépilation ?),
badaboum !

Le bon cocde devrait être :
void creer_fichier(char* attribut, char* valeur, char* nom_table)

D'autre part, vous ne réservez que 20 caractères pour votre variable
fichier, ce qui vous fait risquer le débordement.

Je vous recommande vivement d'envisager l'acquisition du K&R, vous avez
l'air d'en avoir bien besoin.
Publicité
Poster une réponse
Anonyme