Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
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
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 18-06-2007, 14:01   #1
buddace
Member
 
Iscritto dal: Nov 2002
Messaggi: 257
[c] puntatori astringa

domanda molto semplice.
Visto che nel compilatore che sto usando non è implementata la funzione itoa()
ho pensato bene di scriverla.

Codice:
char* bitoa(unsigned int number)
{

    char string[N];
    unsigned int i;
    
    for(i=N-1;i>0;i--)
       {string[i]=(number%2)+'0';
        number=number/2;}
    return string;
    
    
}

Se faccio una chiamata a questa funzione di questo tipo
printf("%s",itoa(numero));
con numero unsigned int vengono fuori delle porcherie, dove sbaglio ?
__________________
WebMaster di http://www.dccworld.coml'unico sito italiano dedicato interamente ai sistemi di controllo digitale per il modellismo ferroviario.
buddace è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2007, 14:15   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da buddace Guarda i messaggi
Se faccio una chiamata a questa funzione di questo tipo
printf("%s",itoa(numero));
con numero unsigned int vengono fuori delle porcherie, dove sbaglio ?
Quando questa tua funzione termina, le variabili locali (come l'array 'string') spariscono. Tra l'altro .... non ti basta usare %d e passare direttamente il numero alla printf??
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2007, 14:26   #3
buddace
Member
 
Iscritto dal: Nov 2002
Messaggi: 257
Devo stampare il decimale in binario.
__________________
WebMaster di http://www.dccworld.coml'unico sito italiano dedicato interamente ai sistemi di controllo digitale per il modellismo ferroviario.
buddace è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2007, 14:32   #4
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da buddace Guarda i messaggi
Devo stampare il decimale in binario.
Ah, sì, non avevo letto bene il tuo codice, visto che poi sotto parlavi di itoa.

Vedi in <questo> thread un mio esempio.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2007, 14:56   #5
labrosan
Junior Member
 
Iscritto dal: Apr 2007
Messaggi: 27
devi dichiarare string come puntatore e allocare lo spazio necessario alla stringa

char *string;

string=(char*)malloc(N*sizeof(char));

...elaborazione...

return string;

Ciao
labrosan è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2007, 15:06   #6
labrosan
Junior Member
 
Iscritto dal: Apr 2007
Messaggi: 27
Esempio di codice:
Codice:
#include <stdio.h>
#include <stdlib.h>

char* bitoa(unsigned int number);

int main ( void )
{
    unsigned int numero=100;
    
    printf("%d --> %s \n",numero,bitoa(numero)); 
    system("pause");  
    return 0;    
}


char* bitoa(unsigned int number)
{  char *string;
    unsigned int i;
    unsigned int temp=number;
    int len=0;
    
    while (temp)
    {   temp/=2;          // calcolo quanto sarà lunga la string
        len++;  } 
    
    string=(char*)malloc(len*sizeof(char));        // alloco lo spazio necessario alla stringa
        
    for(i=0 ; i<len ; i++)
    { 
        string[i]=(number%2)+'0';      // conversione int-char 
        number=number/2;               // ottengo un numero al rovescio
        }
    
    string[i]='\0';                     // terminatore di stringa
    
    for ( i=0 ; i<len/2 ; i++ )         // raddrizzo la stringa
    {   
        temp=string[i];
        string[i]=string[len-1-i];
        string[len-1-i]=temp;
        }
        
    return string;        
}
labrosan è offline   Rispondi citando il messaggio o parte di esso
Old 18-06-2007, 15:23   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da labrosan Guarda i messaggi
Codice:
    while (temp)
    {   temp/=2;          // calcolo quanto sarà lunga la string
        len++;  } 
    
    string=(char*)malloc(len*sizeof(char));        // alloco lo spazio necessario alla stringa
E lo spazio per il nullo finale? no?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 19-06-2007, 10:55   #8
buddace
Member
 
Iscritto dal: Nov 2002
Messaggi: 257
Alla fine l'ho fatta cosi. Considerate che le mie stringhe sono sempre di 8 caratteri e per mie necessità se passo stringhe più corte devo allungarle ad 8.
Codice:
char* bitoa(unsigned int number,unsigned int lung,char end[])
{

    static char string[N];
    int i,y=0;
    
    //number <<= N-lung;
    for(i=N-1;i>=0;i--)
       {
        if(i<N-lung)
          {string[i]=end[y];
           y++;}
        else
            {string[i]=(number%2)+'0';
             number=number/2;}
        }
    
    return string;
}
__________________
WebMaster di http://www.dccworld.coml'unico sito italiano dedicato interamente ai sistemi di controllo digitale per il modellismo ferroviario.
buddace è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
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...
La Cina lancia un servizio simile a Dire...
SpaceX: Elon Musk torna a parlare dei pr...
G.Skill risarcisce 2,4 milioni di dollar...
Test degli annunci su ChatGPT avviati: '...
TSMC approva investimenti record da quas...
L'IA agentica arriva anche sullo storage...
Euro digitale, il Parlamento UE cambia r...
Alphabet e la sua obbligazione centenari...
L'UE anticipa un intervento per bloccare...
Il Trump Phone esiste ma è molto ...
Frodi deepfake fuori controllo: perch&ea...
Consumano il 30% in meno: arrivano i nuo...
Tesla Semi svela i numeri definitivi: 80...
La Air Force statunitense vieta occhiali...
Wi-Fi Intel e Windows: le novità ...
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: 04:26.


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