Перевод char-а в int. Элемента массива в число.(Си)
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Перевод 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 <stdio.h>
#include <stdlib.h>
#define MAX 10
int ms[MAX][MAX], i, j;
char m[MAX], h[1]; //в этот массив я записываю строку, которую и надо сделать целочисленной
int main(void) {
<операторы>
for(i = 0; i < MAX; i++) {
gets(m);
for(j = 0; j < MAX; j++) {
h[0] = m[j];
ms[i][j] = atoi(h);
}
}
<операторы>
return 0;
} компилируется это дело GCC без ошибок, но вот в массиве ms[MAX][MAX] вместо желаемых “1” и “0” одни нули)) В чем дело до меня, увы, не доходит, объясните горе кодеру где он ошибся.
|
|
|
RE: Перевод char-а в int. Элемента массива в число.(Си) - 2006-11-01 14:32:57.443333
|
|
|
Rand0m
Сообщений: 4
Оценки: 0
Присоединился: 2006-10-20 17:17:43.710000
|
Гхм, под Windows программа прекрасно работает )
|
|
|
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'; ?
|
|
|
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 … иначе …
|
|
|
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', то получу число соответствующее цифре.
|
|
|
RE: Перевод char-а в int. Элемента массива в число.(Си) - 2006-11-01 22:18:50.770000
|
|
|
Param0n
Сообщений: 113
Оценки: 0
Присоединился: 2006-10-31 23:02:16.050000
|
Спасибо.
|
|
|
|
|