Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

convertire stringa a un numero intero in C

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

convertire stringa a un numero intero in C

Postdi topwild » 20/11/07 13:31

devo scrivere una funzione come la ATOI cioè che riceva in input una stringa di caratteri composta da cifre numeriche e restituisca il corrispondente numero intero. Tutto questo con C.
io
topwild
Utente Junior
 
Post: 27
Iscritto il: 08/12/03 15:23

Sponsor
 

Postdi mrblue » 20/11/07 14:32

atoi non lo puoi usare proprio, neanche per parsare le singole cifre?
per ogni carattere della stringa prendi la cifra o con atoi (se puoi o con 10 if)
e sommi le cifre moltiplicate per 10 elevato alla posizioni nella stringa (parti da 0 quella piu a destra)
qualcosa del genere
Codice: Seleziona tutto
public int myatoi(char*numero,int size) {
int result=0;
int pos=0;
for(int i=size-1;i>=0;i--)
{
int cifra=0;

if(size[i]=='9') cifra=9;
....
if(size[i]=='0') cifra=0;
result+=cifra*(10^pos);
pos++;
}
}

Sbagliare è umano, ma per riuscire davvero a incasinare completamente le cose ci vuole un computer.
---------------------
http://mrblue73.blogspot.com/
mrblue
Utente Senior
 
Post: 364
Iscritto il: 22/10/01 01:00
Località: Roma

Postdi zello » 22/11/07 15:27

Se mi ricordo bene, è caratteristica richiesta a tutti i set di caratteri (ASCII o non ASCII) che i numeri siano rappresentati con caratteri consecutivi.
Quindi un ciclo potrebbe essere una cosa del genere (ritorno -1 in caso di errore)
Codice: Seleziona tutto
int my_atoi(const char *c)
{
    int ret=0;
    while(*c)
    {
        unsigned char tmp=(unsigned char)(*(c++)-'0');
        if(tmp>9)
              return -1;
        ret=ret*10+(int)tmp;
    }
    return ret;
}

(salvo errori, non ho compilatori qui. Il cast è inutile, serve solo per chiarezza).
Il faut être toujours ivre. Tout est là : c'est l'unique question. Pour ne pas sentir l'horrible fardeau du Temps qui brise vos épaules et vous penche vers la terre,il faut vous enivrer sans trêve...
Avatar utente
zello
Moderatore
 
Post: 2351
Iscritto il: 06/05/02 13:44


Torna a Programmazione


Topic correlati a "convertire stringa a un numero intero in C":


Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite