2013-02-13 3 views
0

В C мне нужна функция, которая принимает буквенно-цифровые символы списка от 0-9 и преобразует ее в целое число.Функция strToInt преобразует список символов в целое число в C

Код:

int strToInt(char string[]) 
{ 
    int i, intValue, result = 0; 
    for (i = 0; string[i] > '0' && string[i] <= '9'; ++i) 
    { 
     intValue = string[i] - '0'; 
     result = ??? 
    } 
    return result; 
} 

Что я помещал в ??? заставить его работать?

ответ

2

Попробуйте это:

result = result * 10 + intValue; 

также:

string[i] > '0' 

в петле for кажется противным - номера могут содержать цифры 0, верно? Вы можете использовать

string[i] >= '0' 

вместо, или даже лучше, не изобретать колесо:

#include <ctype.h> 

for (i = 0; isdigit(string[i]); ++i) 
+1

Возможно, стоит также отметить, что строгое сравнение в 'string [i]> '0'', вероятно, является ошибкой. – NPE

+0

@NPE Да, правильно. –

+0

Спасибо, что ответ был очень полезным! – poseidon11

1

Ну, ваша строка в десятичной системе счисления, основание 10, и каждая цифра в строке представляет позицию в базовой системе 10. То есть Так что вы хотите сделать

result = result * 10 + intValue; 

Помните, что «0» также цифра, так что вы не хотите пропустить что один, используйте string[i] >= '0'

+0

Абсолютно верно с нулевым значением! Спасибо! – poseidon11

0

Если говорить о базе 10, вы вероятно, следует включать 0 также как цифры и, следовательно,

string[i] >= '0' 

в вашем for цикле. и обычный расчет стоимости места

result = result*10 + intValue; 
Смежные вопросы