Точка кода предназначена для создания двумерного массива измерений, заданного пользователем. После запроса ширины и высоты пользователь должен поместить значения char
в каждую позицию в 2D-массиве. Когда реализовано с int
: (int mat, int value), алгоритм работает нормально, однако при попытке реализовать с char (char mat, char value) результат не согласуется с целочисленной версией. Единственными изменениями являются тип массива и значение, а также установка scanf/printf("%d")
на scanf/printf("%c)
. Как вы можете реализовать этот 2D-массив с символами?Как заполнить двумерный массив символами в C?
#include <stdio.h>
int main() {
int width;
int height;
printf("Enter col and row values between 2 and 20.\n");
scanf("%d %d", &width, &height);
printf("The numbers you typed was %d %d\n", width, height);
char mat[height][width];
int i;
int j;
char value;
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
printf("Enter your value.\n");
scanf("%c", &value);
mat[i][j] = value;
}
}
for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
printf("%c", mat[i][j]);
}
printf("\n");
}
return 0;
}
Или используйте 'scanf ("% c ", ...)'. Но, конечно, это предотвращает фактическое вложение любых пробельных символов, если это желательно ... – twalberg
Цикл 'do' /' while' является фиктивным. Вместо этого вы можете сначала игнорировать ожидающие новые строки с помощью 'scanf ("% * [\ r \ n] ");' и затем читать символ с 'value = ''; scanf ("% c", & value); ' – chqrlie