|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
[C]Convertire un intero in una stringa
Salve, esiste una funzione (tipo l'inversa di quella che cerco, cioè atoi) che mi permetti di convertira un intero in una strnga???
grazie
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
#2 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
l'itoa esiste ma non è portabile; se anziché C puoi usare C++ è meglio, basta che metti il numero in uno stringstream, altrimenti devi fare la stessa cosa ma in C tramite sprintf.
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Mar 2007
Messaggi: 1792
|
itoa?
|
|
|
|
|
|
#4 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
Quote:
cmq ho trovato questa implementazione: Codice:
char *itoa(int n, char *s)
{
int i, sign;
if ((sign = n) < 0) /* tiene traccia del segno */
n = -n; /* rende n positivo */
i = 0;
do { /* genera le cifre nell'ordine inverso */
s[i++] = n % 10 + '0'; /* estrae la cifra seguente */
} while ((n /= 10) > 0); /* elimina la cifra da n */
if (sign < 0)
s[i++] = '-';
s[i] = '\\0';
reverse(s);
return s;
}
void reverse(char *s)
{
int c, i, j;
for (i = 0, j = strlen(s) - 1; i < j; i++, j--) {
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Vabbe' che la si poteva pure fare senza rigirare niente, ma se esiste sprintf(), usala, fai immensamente prima e non re-inventi la ruota.
ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#6 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
già, eccola qua:
http://msdn.microsoft.com/en-us/libr...tt(VS.80).aspx |
|
|
|
|
|
#7 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Più che altro nel senso che non è standard.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#9 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
si vabbè, quello intendevo
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Be', non dimenticare che io sono ballbreaker™.
E poi precisavo perché c'è una differenza tra le due cose, non è un difetto dei compilatori che hanno scelto di implementare o non implementare tale chiamata, è che proprio non è parte del linguaggio, quindi è solo un'estensione proprietaria. Lo so che tu lo sai, ma preciso per eventuali lettori occasionali, che non devono fare confusione.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#11 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
:|
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
|
meglio, direi di usare la snprintf
esempio: Codice:
... int i = 45; char string[10]; snprintf(string, sizeof(string), "%d", i); /* metto il finestringa */ string[sizeof(string) - 1] = 0; ... al posto di strtok è meglio usare strtok_r (è reentrant), idem per la ctime (c'è la ctime_r)...
__________________
Ciao ciao cagnolino Billy MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen. XBOX Live GamerTag: InsaneMau |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
![]() Che ho detto di male?
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
|
la sprintf non è robusta, esempio:
Codice:
int i= 12345; char string[2]; sprintf(string,"%d", i);
__________________
Ciao ciao cagnolino Billy MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen. XBOX Live GamerTag: InsaneMau |
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
quindi alla fine meglio che mi creo io una funzione (come quella che ho postato) invece di usare itoa oppure sprintf......no?
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
#16 | |
|
Senior Member
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
|
Quote:
la snprintf va più che bene!!! ho sottolineato il fatto che la snprintf è più robusta della sprintf, tutto qui. usala pure che funziona egregiamente http://it.wikipedia.org/wiki/Printf#sprintf
__________________
Ciao ciao cagnolino Billy MacMini late 2009, 2.53GHz, 4GB ram, 320GB hard disk, Snow Leopard 10.8.2 - iPod Nano 6th gen. XBOX Live GamerTag: InsaneMau |
|
|
|
|
|
|
#17 | |
|
Senior Member
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
|
Quote:
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread |
|
|
|
|
|
|
#18 | |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
Quote:
All'università ci stanno facendo studiare proprio adesso degli esempi anche banali su come può essere fatto uno stack smashing usando un buffer overflow, figurati se contestavo il tuo post.
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
|
#19 | ||
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
2) non è che le dimensioni della rappresentazione testuale di un intero siano tanto ignote eh Quote:
|
||
|
|
|
|
|
#20 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:32.




















