2009-05-15 23 views

Odpowiedz

35

standardowa funkcja atoi() prawdopodobnie będzie robić to, co chcesz.

Prosty przykład za pomocą „atoi”:

#include <unistd.h> 

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

atoi pobiera znak *, a nie znak. –

+1

Czy to nie tylko semantyka? Znak * również podaje znak, wystarczy podać adres. Ale ok, nie patrzyłem na szczegóły, moje C zaczyna być trochę zardzewiałe. –

+45

Jeśli przejdziesz do czegoś, co spodziewa się końca łańcucha o wartości zero, będziesz w świecie bólu. –

144

W dawnych czasach, kiedy możemy założyć, że większość komputerów wykorzystywane ASCII, możemy po prostu zrobić

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

Ale w tych dniach Unicode, to nie jest dobry pomysł. Nigdy nie był dobrym pomysłem, gdyby twój kod musiał działać na komputerze innym niż ASCII.

Edycja: Chociaż wygląda hackish, widocznie jest to jest gwarantowane przez standard do pracy. Dzięki @Earwicker.

+0

Nie działa. Oczekuję odpowiedzi jako 1, ale daje ona 6-cyfrowe śmieci numer jeden, myślę, że – Cute

+0

Przepraszamy, zmieniłem go na c [0], ponieważ używa tego przykładowy kod. –

+0

W jaki sposób kod Unicode może wpływać na reprezentację cyfry w zmiennej char? –

Powiązane problemy