Код:
#include <stdio.h>
int main(){
int num;
scanf("%d", &num);
printf("Enter: ");
char nums[5][num], ch;
for(int i = 0; i < num; i++){
for(int j = 0; j < 5; j++){
if((ch = getchar()) != '\n'){
nums[j][i] = ch;
}
}
}
for(int i = 0; i < num; i++){
for(int j = 0; j < 5; j++){
printf("%c ", nums[j][i]);
}
printf("\n");
}
return 0;
}
Вывод:
1
Enter: 12345
1 2 3 4
Process returned 0 (0x0) execution time : 6.282 s
Press ENTER to continue.
Почему отсутствует последний элемент и дополнительное пространство в начале вывода массива?
Если я изменю диапазон для j в обоих циклах на
j <= 5
, то результат будет выглядеть следующим образом:
1
Enter: 12345
1 2 3 4 5
Process returned 0 (0x0) execution time : 2.107 s
Press ENTER to continue.
Если начальное значение для j равно 1 в printf l oop, тогда выходные данные выглядят так:
1
Enter: 12345
1 2 3 4 5
Process returned 0 (0x0) execution time : 3.675 s
Press ENTER to continue.
Нет дополнительного пробела в начале вывода массива.
Кто-нибудь может объяснить это и как решить эту проблему?