[C/C++] bizarre: fprintf change d'autres var!
Résolu
gachneux
Messages postés
10
Date d'inscription
Statut
Membre
Dernière intervention
-
gachneux Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
gachneux Messages postés 10 Date d'inscription Statut Membre Dernière intervention -
Bien le bonjour!
Alors là j'en ai une bien bonne!
Je vous explique:
Dans mon petit programme simplounet je dois récupérer une chaine dans un fichier temporaire que j'ai créé. Là tout va bien, mais voilà qu'une autre variable(qui n'a strictement rien à voir!) a aussi changé de valeur!
Regardez par vous même:
Et bien croyez moi, j'ai même vérifié sur la console en rajoutant de simples printf avant et après cette ligne, mais providerConf passe de sa valeur normale à... un truc inmangeable! (du genre: "ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ..." ou bien: "=========...")
Si jamais vous savez de quoi il s'agit ça serait sympa de m'éclairer!
Alors là j'en ai une bien bonne!
Je vous explique:
Dans mon petit programme simplounet je dois récupérer une chaine dans un fichier temporaire que j'ai créé. Là tout va bien, mais voilà qu'une autre variable(qui n'a strictement rien à voir!) a aussi changé de valeur!
Regardez par vous même:
char nameTemp[50] = ""; char providerConf[50] = ""; ... fscanf(FileTemp, "%s", &nameTemp); ...
Et bien croyez moi, j'ai même vérifié sur la console en rajoutant de simples printf avant et après cette ligne, mais providerConf passe de sa valeur normale à... un truc inmangeable! (du genre: "ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ..." ou bien: "=========...")
Si jamais vous savez de quoi il s'agit ça serait sympa de m'éclairer!
3 réponses
pourrais-tu détailler ton code stp ?
qu'y a-t-il a la place des "..." ?
char nameTemp[50] = ""; char providerConf[50] = ""; ... fscanf(FileTemp, "%s", &nameTemp); ...
qu'y a-t-il a la place des "..." ?
Salut
Remplace fscanf(FileTemp, "%s", &nameTemp); par fscanf(FileTemp, "%s", nameTemp);
En effet nameTemp n'a pas besoin d'ampersand.
Si l'autre variable a changé de valeur, c'est que tu as fait du Buffer OverFlow à cause de l'adresse mémoire.
Normalement, avec cette correction, il ne devrait plus y avoir de problèmes.
Bonne journée
Remplace fscanf(FileTemp, "%s", &nameTemp); par fscanf(FileTemp, "%s", nameTemp);
En effet nameTemp n'a pas besoin d'ampersand.
Si l'autre variable a changé de valeur, c'est que tu as fait du Buffer OverFlow à cause de l'adresse mémoire.
Normalement, avec cette correction, il ne devrait plus y avoir de problèmes.
Bonne journée