Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

résoudre un débug

4 réponses
Avatar
programmation
Bonjour,

Lorsque le lance l'ex=E9cution avec d=E9bogage 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=E9soudre ?

Merci

4 réponses

Avatar
nico
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
Avatar
programmation
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.
Avatar
marc
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..
Avatar
Bertrand Lenoir-Welter
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.