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
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);