Sprintf et allocation de mémoire [Résolu]

Signaler
Messages postés
31
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2010
-
Messages postés
31
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2010
-
j'aimerai savoir si le code suivant est correct

char *c;           
sprintf(c , "toto");

est-ce le systeme qui alloue de la mémoire à c?
sur quoi pointe c?

Merci de votre aide.

Jérôme
A voir également:

3 réponses

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
Le system n'alloue rien du tout.

ciao...
BruNews, MVP VC++
Messages postés
151
Date d'inscription
mardi 12 octobre 2004
Statut
Membre
Dernière intervention
15 avril 2009

Premierement, ton pointeur de 'char' ne pointe vers rien, et en plus, il 'pique', car il n'est pas initialisé, donc, pointe vers une valeur inconnue.

Ceci dit,il faudrait créer un buffer (mémoire tampon) pour ton char*.

La syntaxe est :
---------
1- char buffer[255] ; (static)
OU
2- char* buffer = new char[255]; (dynamic)
--------
pour une valeur de 254 caractère max. (le dernier étant caract.de fin de string).

pour ton code,voici la version qui marche:

char c [255];       
sprintf(c , "%s'","toto");

***Note***
Le "%s" est un indicateur de format qui doit etre inclus a sprintf.
"%s" signifie 'STRING'.
Il y en a d'autre comme "%c" qui signifie 'CHAR', ou "%d" qui veut dire décimal.








Pepsidrinker
Messages postés
31
Date d'inscription
jeudi 27 mars 2003
Statut
Membre
Dernière intervention
1 octobre 2010

merci pour ces réponses
en fait j'avais un doute car lorsque j'ai executé ce petit programme test, il n'y avait pas d'erreur! je faisais un printf() et ça m'affichais la valeur attendue!
ce n'est qu'en faisant un test un peu plus complet que j'ai enfin eu un débordement de mémoire

Merci de votre aide.

Jérôme