@Gagatyn
Самоучка

Как присвоить integer элементу массива символ char?

Есть матрица 3х3 типа int. Как присвоить элементу любому этой матрицы любой символ? Я взял второй массив char, чтобы хотя бы видеть результат.
// у arrayI значения элементов от 1 до 9
void slct(int arrayI[3][3], char arrayC[3][3]) {
    int x = getchar() - '0';
    memset(arrayC, '-', sizeof arrayC);
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            if( x == arrayI[i][j]) {
                arrayC[i][j] = 'W';
            }
            printf("[ %d ]", arrayC[i][j]);
        }
        printf("\n");
    }
}
/* Вывод такой:
Вводим 5 и на 5, т.е. 4 элементе 88, как сделать 'W'?
[ 0 ][ 0 ][ 0 ]
[ 0 ][ 88 ][ 0 ]
[ 0 ][ 0 ][ -115 ] 
Почему 8 элемент равен чему-то? Как это исправить?
*/
  • Вопрос задан
  • 687 просмотров
Пригласить эксперта
Ответы на вопрос 2
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
memset(arrayC, '-', sizeof arrayC);

Делает не то, что вы ожидаете. sizeof arrayC будет равен размеру указателя, поскольку в функцию массив передаётся как указатель, несмотря на то, что в прототипе написано int arrayC[3][3].
if( x == arrayI[i][j])

Вы не показали как инициализирован массив arrayI, поэтому неизвестно, когда это условие сработает.

Как присвоить элементу любому этой матрицы любой символ?

Ровно так как вы и делаете -- arrayC[i][j] = 'W';
Ответ написан
@res2001
Developer, ex-admin
В С/С++ тип char - это знаковый целый размером в 1 байт. Поэтому инту присваивается на прямую, без всяких танцев:
arayI[i][j] = arrayC[i][j]

Чтоб вывести символ вместо цифры, используйте шаблон %c в printf.

Похоже на то, что ваш код не соответствует выводу, который вы приводите ниже в комментариях.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы