De l'utilisation de sprintf()...
Citation:
Comme printf(), la fonction sprintf() convertit une ou plusieurs variables suivant les formats précisés. Mais sprintf place les résultats dans la chaîne 'tampon' (son premier argument), alors que printf les envoie sur la sortie standard.
Les résultats placés dans la chaîne pointée par tampon sont terminés par '\0'. Vous devez être sûr que la place suffisante pour coder les résultatsées est disponible.
D'où ma question : n'y a-t-il pas un moyen plus sécurisé de faire la même chose? car par définition, la longueur de la chaîne que je vais créer n'est pas forcément déterminée... Comment éviter un éventuel dépassement de mémoire?
Re: De l'utilisation de sprintf()...
Citation:
Envoyé par @drien
D'où ma question : n'y a-t-il pas un moyen plus sécurisé de faire la même chose? car par définition, la longueur de la chaîne que je vais créer n'est pas forcément déterminée... Comment éviter un éventuel dépassement de mémoire?
Je te comprends. Mais en même temps, le programmeur connaît toujours la taille qu'il alloue, non?
Nas'
Re: De l'utilisation de sprintf()...
Citation:
Envoyé par Nasky
Je te comprends. Mais en même temps, le programmeur connaît toujours la taille qu'il alloue, non?
Pas forcément, si j'en ai besoin pour stocker une chaîne avec un paramètre comme un entier par exemple, si l'entier est 7 il prend 1 caractère mais si c'est 125 ils en prend trois, etc.....
snprintf() ça à l'air bien, je connaissais pas :oops: , et une petite fonction vérifiant si ça marche ou sinon allouant plus jusqu'à ce que ça marche me parait sympatique à coder.
Merci à tous!
EDIT : c'est standart ça? (juste pour savoir :wink: ) parce que d'après les liens que j'ai sur la norme ANSI c'est pas standart... :P
Re: De l'utilisation de sprintf()...
Citation:
Envoyé par @drien
EDIT : c'est standart ça? (juste pour savoir :wink: ) parce que d'après les liens que j'ai sur la norme ANSI c'est pas standart... :P
C'est conforme à la norme C99 (donc effectivement pas ansi)
Re: De l'utilisation de sprintf()...
Citation:
Envoyé par Pouic
Citation:
Envoyé par @drien
EDIT : c'est standart ça? (juste pour savoir :wink: ) parce que d'après les liens que j'ai sur la norme ANSI c'est pas standart... :P
C'est conforme à la norme C99 (donc effectivement pas ansi)
C99 a été promulgué par l'ANSI (passer par eux est d'ailleurs une des méthodes les plus simples et moins onéreuses d'en optenir le texte).
Re: De l'utilisation de sprintf()...
Citation:
Envoyé par Pouic
Citation:
Envoyé par @drien
EDIT : c'est standart ça? (juste pour savoir :wink: ) parce que d'après les liens que j'ai sur la norme ANSI c'est pas standart... :P
C'est conforme à la norme C99 (donc effectivement pas ansi)
Ben si, c'est ANSI 2000