Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto
be quiet! debutta nel settore mouse da gaming con Dark Perk Ergo e Dark Perk Sym: due modelli gemelli per specifiche, con polling rate di 8.000 Hz anche in wireless, sensore PixArt PAW3950 da 32.000 DPI e autonomia dichiarata fino a 110 ore. Nel test, a 8.000 Hz si arriva a circa 30 ore reali, con ricarica completa in un'ora e mezza
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 31-05-2008, 15:12   #1
gepeppe
Senior Member
 
L'Avatar di gepeppe
 
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
gepeppe è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2008, 15:22   #2
71104
Bannato
 
L'Avatar di 71104
 
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.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2008, 15:31   #3
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
itoa?
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2008, 15:42   #4
gepeppe
Senior Member
 
L'Avatar di gepeppe
 
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
Quote:
Originariamente inviato da 71104 Guarda i messaggi
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.
No, posso usare solo il C. Cmq in che senso non è portabile?

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;
   }
}
Si potrebbe usare quella invece che la semplice itoa(...): no? cosi si dovrebbe risolvere il problema
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread
gepeppe è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2008, 16:01   #5
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
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!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2008, 16:16   #6
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da variabilepippo Guarda i messaggi
itoa?
già, eccola qua:
http://msdn.microsoft.com/en-us/libr...tt(VS.80).aspx
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2008, 16:18   #7
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da gepeppe Guarda i messaggi
No, posso usare solo il C.
sprintf allora.


Quote:
Cmq in che senso non è portabile?
nel senso che non ce l'hanno tutti i compilatori.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2008, 16:23   #8
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
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!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2008, 16:24   #9
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
si vabbè, quello intendevo
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2008, 16:31   #10
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da 71104 Guarda i messaggi
si vabbè, quello intendevo
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!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2008, 18:19   #11
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
:|
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2008, 18:23   #12
maulattu
Senior Member
 
L'Avatar di maulattu
 
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;
...
è buona abitudine usare le funzioni robuste...
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
maulattu è offline   Rispondi citando il messaggio o parte di esso
Old 31-05-2008, 18:26   #13
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
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!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2008, 11:00   #14
maulattu
Senior Member
 
L'Avatar di maulattu
 
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi


Che ho detto di male?
la sprintf non è robusta, esempio:
Codice:
int i= 12345;
char string[2];
sprintf(string,"%d", i);
ed ecco un bella sfondata di memoria in cui vai a scrivere in un'area di memoria magari di un'altra variabile (se ti va bene) o, peggio ancora, di un altro programma (con il classico segmentation fault)
__________________
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
maulattu è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2008, 11:07   #15
gepeppe
Senior Member
 
L'Avatar di gepeppe
 
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
gepeppe è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2008, 11:27   #16
maulattu
Senior Member
 
L'Avatar di maulattu
 
Iscritto dal: Mar 2005
Città: ~
Messaggi: 740
Quote:
Originariamente inviato da gepeppe Guarda i messaggi
quindi alla fine meglio che mi creo io una funzione (come quella che ho postato) invece di usare itoa oppure sprintf......no?
no no,
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
maulattu è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2008, 11:30   #17
gepeppe
Senior Member
 
L'Avatar di gepeppe
 
Iscritto dal: Jun 2005
Città: Napoli
Messaggi: 2599
Quote:
Originariamente inviato da maulattu Guarda i messaggi
no no,
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
ah ok allora grazie!
__________________
Hp pavilion dv6-1250el [cpu: P8700 - ati radeon hd 4650 1 gb - 4 gb ram - hd 320 7200 rpm!] Garmin Official Thread
gepeppe è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2008, 13:11   #18
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da maulattu Guarda i messaggi
la sprintf non è robusta, esempio:
Codice:
int i= 12345;
char string[2];
sprintf(string,"%d", i);
ed ecco un bella sfondata di memoria in cui vai a scrivere in un'area di memoria magari di un'altra variabile (se ti va bene) o, peggio ancora, di un altro programma (con il classico segmentation fault)
LOL, scusa, il mio post era rivolto a 71104, solo che mentro lo scrivevo hai postato il tuo, e così s'è creata la confusione.

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!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2008, 15:14   #19
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da maulattu Guarda i messaggi
la sprintf non è robusta, esempio:
Codice:
int i= 12345;
char string[2];
sprintf(string,"%d", i);
1) come già detto esiste snprintf
2) non è che le dimensioni della rappresentazione testuale di un intero siano tanto ignote eh


Quote:
ed ecco un bella sfondata di memoria in cui vai a scrivere in un'area di memoria magari di un'altra variabile (se ti va bene) o, peggio ancora, di un altro programma (con il classico segmentation fault)
ma studiati un po' di memoria virtuale, niubboh
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2008, 15:16   #20
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da DanieleC88 Guarda i messaggi


Che ho detto di male?
niente, è che stimo troppo la tua pignoleria
71104 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
E-bike giapponese con 1.000 km di autono...
Un eVTOL con cui basta saper andare in b...
Dal mercato cinese al mondo: HONOR firma...
Sovranità digitale: l'UE sperimen...
Accesso alla memoria su Windows 11 solo ...
iPhone 18 Pro Max con batteria da oltre ...
Windows 11, cali di prestazioni sulle GP...
Un altro iPhone economico è in arrivo a ...
The Grand Tour 2026: ecco chi saranno i ...
Dai display alle soluzioni: Samsung tra ...
Ruba gli account Snapchat di quasi 60 do...
Svelata la Xiaomi YU7 GT: kit wide body ...
Svelati gli amiibo di Resident Evil Requ...
Nigeria prima nazione africana a produrr...
QuakeCon 2026: anniversario storico per ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 15:48.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v