2012-03-07 12 views
6

Scusate se questa è una domanda super facile, ma sono molto nuova a C. Voglio essere in grado di trasmettere char * s in double e ints e non riesco a trovare una spiegazione su come.Come si trasmette un char * a un int o un double in C

Modifica: Sto leggendo in input utente, che è un carattere *. La metà dell'input che voglio convertire da, diciamo, "23" a 23 e metà da, ad esempio, "23.4" a 23.4.

+0

Vuoi dire cast o convertire? In altre parole, vuoi convertire '" 42 "' nel numero '42' o trattare la memoria che il' char * 'punta come' int' – JaredPar

+0

Codice di lavoro su come usare 'strtol()' può essere trovato [qui] (http://stackoverflow.com/a/2729534/50049), lo sto chiudendo perché troppo localizzato, dal momento che non eri abbastanza sicuro del problema che stavi affrontando. –

risposta

2

In senso stretto, è possibile eseguire questa operazione: puntatore (int).

Tuttavia, probabilmente stai cercando le funzioni atoi e atof.

atoi è una funzione che converte un carattere * che punta a una stringa contenente un numero intero in decimale in un numero intero.

atof è uguale per il doppio.

+2

La famiglia di funzioni 'strtol()' è raccomandata su 'atoi()', se solo perché 'atoi()' restituisce la stessa cosa quando fallisce e quando analizza con successo '0'. –

+1

'atoi()' non esegue alcun controllo di errore. 'strtol()' gestisce gli errori, imposta errnos significativi e anche copia i rifiuti trovati in input per un'ispezione successiva. –

+0

Vero, ma atoi è più vicino all'equivalente della stringa cast a numero intero in lingue di livello superiore. – Joshua

13

Puoi lanciare un char* come questo:

char *c = "123.45"; 
int i = (int) c;  // cast to int 
double d = (double) c; // cast to double 

Ma che darà risultati senza senso. Semplicemente costringe il puntatore ad essere trattato come un intero o doppio.

presumo ciò che si desidera è di parse (Invece di giocare) il testo in un int o double. Prova questo:

char *c = "123.45"; 
int i = atoi(c); 
double d = atof(c); 
+0

Grazie! Questo è esattamente quello che voglio! – user1231120

+2

(parlando proprio come un utente qui, non un mod) 'atoi()' non è sicuro. –

Problemi correlati