2009-05-15 13 views

Respuesta

35

La función estándar atoi() es probable que haga lo que quiera.

Un ejemplo sencillo usando "atoi":

#include <unistd.h> 

int main(int argc, char *argv[]) 
{ 
    int useconds = atoi(argv[1]); 
    usleep(useconds); 
} 
+11

atoi toma un char * no un char. –

+1

¿No es solo semántica? Un char * también da un char, acaba de pasar la dirección. Pero vale, no miré los detalles, mi C está empezando a oxidarse. –

+45

Si pasa & c a algo esperando una cadena terminada nula, usted estará en un mundo de dolor. –

144

En los viejos tiempos, cuando podríamos suponer que la mayoría de los equipos utilizan ASCII, nos acaba de hacer

int i = c[0] - '0'; 

Pero en estos días de Unicode, no es una buena idea. Nunca fue una buena idea si tu código tuviera que ejecutarse en una computadora que no sea ASCII.

Editar: Aunque parece hackish, evidentemente es garantizado por el estándar para funcionar. Gracias @Earwicker.

+0

No funciona. Espero responder como 1 pero da una basura nummber de 6 dígitos, creo – Cute

+0

Lo siento, lo cambié a c [0] ya que es lo que usa el código de ejemplo. –

+0

¿Cómo podría unicode afectar la representación de un dígito en una variable char? –

Cuestiones relacionadas