2009-05-15 17 views

Antwort

35

Die Standardfunktion atoi() wird wahrscheinlich tun, was Sie wollen.

Ein einfaches Beispiel "atoi" mit:

#include <unistd.h> 

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

atoi nimmt ein char * nicht ein char. –

+1

Ist das nicht nur Semantik? Ein Char * gibt auch einen Char, übergeben Sie einfach die Adresse. Aber ok, ich habe mir die Details nicht angesehen, mein C fängt an, irgendwie rostig zu werden. –

+45

Wenn Sie & c an etwas übergeben, das eine nullterminierte Zeichenkette erwartet, werden Sie in einer Welt der Verletzung sein. –

144

In den alten Tagen, wenn wir, dass die meisten Computer ASCII verwendet annehmen könnten, würden wir tun, nur

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

Aber in diesen Tagen von Unicode ist es keine gute Idee. Es war nie eine gute Idee, wenn Ihr Code auf einem Nicht-ASCII-Computer ausgeführt werden musste.

Edit: Obwohl es hackish aussieht, ist es offensichtlich ist garantiert durch den Standard zu arbeiten. Danke @Earwicker.

+0

Nicht funktioniert. Ich erwarte Antwort als 1, aber es gibt eine 6-stellige Zahl Müll ich denke – Cute

+0

Sorry, ich habe es in c [0] geändert, da das ist, was der Beispielcode verwendet. –

+0

Wie kann Unicode die Darstellung einer Ziffer in einer char-Variable beeinflussen? –

Verwandte Themen