[C] Problème à deux francs avec sprintf

Problème à deux francs avec sprintf [C] - Programmation

Marsh Posté le 10-12-2001 à 20:06:44    

Typiquement une erreur pourrie de C où l'on passe des heures à chercher comme un con alors que en fait l'erreur elle est ENORME mais bon... Donc voilà sur le bout de code suivant, segmentation fault. Mais pourquoi ? Si quelqu'un a une idée bah merci beaucoup. Les autres idées sachant que le but est de convertir un int en char * sont aussi les bienvenues :)
 
int deltaTimeDiv = 96000;
char * deltatimedivstring;
sprintf(deltatimedivstring,"%d",deltaTimeDiv);

Reply

Marsh Posté le 10-12-2001 à 20:06:44   

Reply

Marsh Posté le 10-12-2001 à 20:09:54    

char deltatimedivstring[255];
memset(deltatimedivstring, 0, 255);

Reply

Marsh Posté le 10-12-2001 à 20:11:14    

Le pb c'est que tu declares un pointeur vers une variable de type char.
A aucun moment tu alloues la place pour ecrire dans deltatimedivstring, donc forcement ca doit ecrire a des endroits auquel tu n'as pas acces.
 
le memset rempli initialise tout le char avec des '\0'

Reply

Marsh Posté le 10-12-2001 à 21:01:41    

Merci beaucoup, ça fonctionne comme sur des roulettes !

Reply

Marsh Posté le 10-12-2001 à 21:33:35    

de rien ;)
 
pour une fois que j'peux repondre :D

Reply

Marsh Posté le 11-12-2001 à 10:15:30    

Godbout a écrit a écrit :

de rien ;)
 
pour une fois que j'peux repondre :D  




 
(le memset etait inutile la ;) )

Reply

Marsh Posté le 11-12-2001 à 10:32:03    

le sprintf initialise tout seul ?
 
enfin bon je prefere tout initialiser, au moins je suis sur qu'il n'y a pas n'importe koi dans les variables.


---------------
Super.
Reply

Marsh Posté le 11-12-2001 à 10:41:10    

Sur ce coup là, je suis d'accord avec Godbout. Un memset, ça fait pas de mal !:D
Sans le memset, sprintf mettra un '\0' à la fin de la chaine, mais après ça, sur le reste de l'espace réservé, y peut y avoir n'importe quoi. logiquement, c pas gênant, mais c pas beau ! :D

 

[edtdd]--Message édité par El_Gringo--[/edtdd]

Reply

Marsh Posté le 11-12-2001 à 10:42:37    

El_Gringo a écrit a écrit :

Sur ce coup là, je suis d'accord avec Godbout. Un memset, ça fait pas de mal !:D  




 
Cool [:fifiz]

Reply

Marsh Posté le 11-12-2001 à 10:52:26    

Il est bon ce Godbout :D

Reply

Marsh Posté le 11-12-2001 à 10:52:26   

Reply

Marsh Posté le 11-12-2001 à 10:55:29    

hehe :sol:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed