Sprintf et allocation de mémoire

Résolu
jguillemette Messages postés 31 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 1 octobre 2010 - 19 janv. 2007 à 12:32
jguillemette Messages postés 31 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 1 octobre 2010 - 22 janv. 2007 à 10:05
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

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
19 janv. 2007 à 12:52
Le system n'alloue rien du tout.

ciao...
BruNews, MVP VC++
3
pepsidrinker Messages postés 151 Date d'inscription mardi 12 octobre 2004 Statut Membre Dernière intervention 15 avril 2009
19 janv. 2007 à 20:26
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
3
jguillemette Messages postés 31 Date d'inscription jeudi 27 mars 2003 Statut Membre Dernière intervention 1 octobre 2010
22 janv. 2007 à 10:05
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
0
Rejoignez-nous