Problème à deux francs avec sprintf [C] - Programmation
Marsh Posté le 10-12-2001 à 20:09:54
char deltatimedivstring[255]; 
memset(deltatimedivstring, 0, 255); 
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' 
Marsh Posté le 11-12-2001 à 10:15:30
| Godbout a écrit a écrit  : de rien   pour une fois que j'peux repondre   | 
 
 
(le memset etait inutile la  )
 ) 
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. 
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 ! 
 
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 !  
 
[edtdd]--Message édité par El_Gringo--[/edtdd]
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 !   | 
 
 
Cool ![[:fifiz] [:fifiz]](https://forum-images.hardware.fr/images/perso/fifiz.gif) 
 
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);