Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Перевод char-а в int. Элемента массива в число.(Си)

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Компилируемые языки] >> Перевод char-а в int. Элемента массива в число.(Си)
Имя
Сообщение << Старые топики   Новые топики >>
Перевод char-а в int. Элемента массива в число.(Си) - 2006-10-31 23:05:25.803333   
Param0n

Сообщений: 113
Оценки: 0
Присоединился: 2006-10-31 23:02:16.050000
В программе осуществляется ввод матрицы(массива) 10*10. Вводить массив посимвольно, каждый раз нажимая Enter не очень удобно, поэтому решил вводить строку, а уже после преобразовывать в массив целых чисел (обычно дело). Я вожу нули и единицы так: 0110110100 после жму Enter и вожу другие 10-ть значений, пока не введу этих значений 100 (10 строк по 10 значений)

Для того, чтобы преобразовать строку в целочисленное значение в Cи есть функция atoi(). Чтобы прояснить картину скажу, что в результате этих операция я хочу получить целочисленный массив содержащий каждый элемент строки отдельно. Поскольку atoi() работает только со строками, записываю каждый элемент символьного массива в отдельный массив (состоящий из двух элементов). Примерно это выглядит так…

#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define MAX 10 int ms[MAX][MAX], i, j; char m[MAX], h[1]; //в этот массив я записываю строку, которую и надо сделать целочисленной int main(void) { &lt;операторы&gt; for(i = 0; i &lt; MAX; i++) { gets(m); for(j = 0; j &lt; MAX; j++) { h[0] = m[j]; ms[i][j] = atoi(h); } } &lt;операторы&gt; return 0; }
компилируется это дело GCC без ошибок, но вот в массиве ms[MAX][MAX] вместо желаемых “1” и “0” одни нули)) В чем дело до меня, увы, не доходит, объясните горе кодеру где он ошибся.
Post #: 1
RE: Перевод char-а в int. Элемента массива в число.(Си) - 2006-11-01 14:32:57.443333   
Rand0m

Сообщений: 4
Оценки: 0
Присоединился: 2006-10-20 17:17:43.710000
Гхм, под Windows программа прекрасно работает )
Post #: 2
RE: Перевод char-а в int. Элемента массива в число.(Си) - 2006-11-01 17:17:16.396666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
ms[i][j] = atoi(h); atoi работает со null-terminated строкой, а у тебя h – это один байт, и тот не нулевой.

но как бы там не было, если уж у тебя одноцифирные числа, может проще написать:
ms[i][j] = m[j] - '0'; ?
Post #: 3
RE: Перевод char-а в int. Элемента массива в число.(Си) - 2006-11-01 20:44:56.036666   
Param0n

Сообщений: 113
Оценки: 0
Присоединился: 2006-10-31 23:02:16.050000
Объясни что такое - минус ноль в кавычках? А так, я понял. Если я записываю сивольную строку в целочисленную переменную переменную, то он, по возможности, запишет в неё аски код. В моём случает символы 0 и 1 имеют коды 48 и 49 соответственно, значит можно поставить условие если 48…. если 49 … иначе …
Post #: 4
RE: Перевод char-а в int. Элемента массива в число.(Си) - 2006-11-01 21:26:20.316666   
rgo

Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
quote:

ORIGINAL: Param0n

Объясни что такое - минус ноль в кавычках?

аски коды символов 0, 1, 2, …, 9 идут по порядку. и, соответственно, если я из любого из них вычту аски код символа '0', то получу число соответствующее цифре.
Post #: 5
RE: Перевод char-а в int. Элемента массива в число.(Си) - 2006-11-01 22:18:50.770000   
Param0n

Сообщений: 113
Оценки: 0
Присоединился: 2006-10-31 23:02:16.050000
Спасибо.
Post #: 6
Страниц:  [1]
Все форумы >> [Компилируемые языки] >> Перевод char-а в int. Элемента массива в число.(Си)







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.