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

jguillemette 31 Messages postés jeudi 27 mars 2003Date d'inscription 1 octobre 2010 Dernière intervention - 19 janv. 2007 à 12:32 - Dernière réponse : jguillemette 31 Messages postés jeudi 27 mars 2003Date d'inscription 1 octobre 2010 Dernière intervention
- 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
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
BruNews 21054 Messages postés jeudi 23 janvier 2003Date d'inscription 7 novembre 2014 Dernière intervention - 19 janv. 2007 à 12:52
3
Merci
Le system n'alloue rien du tout.

ciao...
BruNews, MVP VC++

Merci BruNews 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de BruNews
Meilleure réponse
pepsidrinker 151 Messages postés mardi 12 octobre 2004Date d'inscription 15 avril 2009 Dernière intervention - 19 janv. 2007 à 20:26
3
Merci
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

Merci pepsidrinker 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de pepsidrinker
jguillemette 31 Messages postés jeudi 27 mars 2003Date d'inscription 1 octobre 2010 Dernière intervention - 22 janv. 2007 à 10:05
0
Merci
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
Commenter la réponse de jguillemette

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.