2010-09-16 4 views

ответ

9
char mystring[] = "1234567"; 

Каждая цифра будет mystring[n] - '0'.

3

Что сказал Делан. Кроме того, вероятно, плохой практикой для удобства использования ASCII-зависимого обмана. Попробуйте использовать этот из стандартной библиотеки:

int atoi (const char * str); 

EDIT: Намного лучше понять (выше один был указал мне как медленный способ сделать это) Поместите функцию как это:

int ASCIIdigitToInt(char c){ 
    return (int) c - '0'; 
} 

и повторите это вдоль вашей строки.

+0

Хороший вопрос, Сэм. Использование atoi делает более понятным то, что предназначено. – Iain

+0

Очень хороший момент, это было бы хорошо, если бы у вас была возможность использовать программу в системе, отличной от ASCII/UTF-8. Однако учтите, что 'atoi' принимает' char * 'или строку, а не' char', поэтому вам нужно будет преобразовать отдельный символ в односимвольную строку, прежде чем перейти к 'atoi'. –

+0

Хорошо, я исправил это. Приветствия. –

2

Не забывайте, что строка в C на самом деле представляет собой массив типа «char». Вы можете пройти через массив и захватить каждый отдельный символ индексом массива и вычесть из значения ascii этого символа значение ascii «0» (которое может быть представлено «0»).

Смежные вопросы