Newsgroup: it.comp.lang.c
Titolo: HELP: int ---> char

salve
qualcuno mi può ricordare, se esiste, il nome di una utility di libreria che
converte un int in una stringa?
(l'inverso di atoi, tanto per capirci)
ringrazio anticipatamente

converte un int in una stringa?
sprintf(str, "%d", num);
-- 
The Follet


Esiste itoa:
char *itoa(int value, char *string, int radix);
dove value è il valore da convertire, string la stringa che deve
contenere  la conversione e radix la base nella quale il numero và
convertito; restituisce un puntatore a string.
Ciao,
Cecco

char *itoa(int value, char *string, int radix);
No, itoa non esiste.
Non e' una funzione standard.
-- 
The Follet

 converte un int in una stringa?
#include <stdio.h>
snprintf(str, size, "%d", num)
Ma solo se hai un compilatore C99.

esiste  solo nei compilatori borland?
On Sat, 13 Oct 2001 12:45:04 GMT, thef...@thefollet.bye (The Follet)
wrote:


esiste  solo nei compilatori borland?
Non e' standard, quindi puo' essere implementata da
chiunque.  
Mi pare che i compilatori Borland la mettano a disposizione.
-- 
The Follet

On Sat, 13 Oct 2001 15:48:56 GMT, thef...@thefollet.bye (The Follet)
wrotg:

La snprintf() come detto e' STANDARD c99 e in precedenza era
implementata come estensione gnu.
Questo significa che sul GCC e su tutti i porting c'era gia' e
comunque i prossimi compilatori la forniranno oppure non saranno
conformi allo standard.
Paolo :)

implementata come estensione gnu.
Mox, stai piu' attento, si sta parlando di itoa() non di
snprintf().
snprintf() e' stata introdotta con il C99 e quindi e'
standard, ma per raggiungere lo stesso scopo basta una
semplice sprintf(), che e' standard C89.
-- 
The Follet

semplice sprintf(), che e' standard C89.
Si, e' perfettamente fattibile ed e' piu' portabile della snprintf().
Pero' e' MOLTO meno sicura, come tutte le funzioni che non "contano"
(nel senso che controllano che tu non passi il buffer, appunto
attraverso un parametro in piu' che indica la dimensione del buffer).
"Non utilizzare funzioni che scrivono su un buffer senza conoscere la
dimensione massima di questo buffer: strcpy(), strcat(), sprintf(),
sscanf(), strncat()." (Salvatore Sanfilippo - "Antirez", su Linux & C.
di gennaio 2001).
Quando rispondi potresti anche dirgli a cosa va incontro usando la
sprintf().
Pero' qui siamo al confine tra it.comp.lang.c e it.comp.sicurezza.*
Per una spiegazione dettagliata non e' questa la sede. Qui ci si
limita a suggerire la via sicura :)
Mox.

sprintf().
Giusto per precisare:
sprintf(str, "%d", num);
E' il mio esempio e do' per scontato che str sia stato
allocato prima in maniera sufficiente a contenere il numero
che si vuol convertire.
-- 
The Follet



La sicurezza al 100% ce l'hai checkando i limiti di str mentre fai la
conversione e restituendo errore se passi il limite.
La sprintf() cosi' com'e' non e' sicura, tu puoi metterci tutto
l'impegno, ma non c'e' nulla che ti pari in caso di errore. Con la
snprintf() se c'e' un errore e cerchi di passare il limite del buffer
si ferma e ti segna errore, impedendoti appunto di proseguire :)
Ovviamente se io so per certo quando puo' essere grande num e sono
sicuro che str possa contenerlo posso affidarmi alla sprintf().
Io non ho detto che fosse sbagliato infatti (e davo per scontato
questi controlli).
Ho solo puntualizzato che quando consigli a qualcuno 1 funzione
anziche' 1 altra gli dovresti anche dire i pro e i contro (es. perche'
dovrei usare getchar() anziche' fgetc(stdin) seppure paiano
identiche?).
Una cosa che non ho detto e ho dato per scontata: usare la snprintf()
non ti para dagli errori... evita solo che questi possano provocare
danni (ovvero se str non e' abbastanza grande restera' sempre troppo
piccola per contenere num, pero' la funzione restituira' errore e non
sovrascrivera' oltre il limite di str evitando danni).
A proposito, lo sapevate che anche la strncat() non e' sicura da
questo punto di vista? :)
Mox

anziche' 1 altra gli dovresti anche dire i pro e i contro 
Non ricordavo la snprintf, anche perche' non e' ancora
supportata dal 99% dei compilatori :)
-- 
The Follet