Как исправить 'Alrady печатать все элементы массива элементов последней строки' - PullRequest
0 голосов
/ 05 января 2019

Всегда приходите в последнем ряду ответа массива ...

инициализировать переменные ...

int row,column;
row=0;
column=0;
int i,j;
i=0,j=0;
int my_array[row][column];
int sum=0;

Пользователь может ввести значения массива ...

printf("enter row values & column value:\n ");
printf("row value i :");
scanf("%d",&i);
printf("column value :");
scanf("%d",&j);
printf("Set the values...\n");
printf("\n");   

Получить массив в значения ...

for(row=0;row<=i-1;row++)
{
    for(column=0;column<=j-1;column++)
    {
        printf("Enter value for my_array[%d][%d] :",row,column);
                    scanf("%d",&my_array[row][column]);

     }
}

Распечатать массив ....

for(row=0;row<=i-1;row++)
{
    for(column=0;column<=j-1;column++)
    {
        printf("%d ",my_array[row][column]);
    }
    printf("\n");
}

 //end of the code
 return 0;

1 Ответ

0 голосов
/ 05 января 2019

Это ваша проблема,

int row,column;
row=0;
column=0;
// ...
int my_array[row][column];

Вы создаете массив с нуля. Неважно, что вы позже назначите значения для row и column через scanf, потому что к тому времени вы уже создали my_array. Есть два решения:

1. Создайте массив с заданным размером.

Это само по себе исправляет ваш код, поскольку пользователь никогда не вводит значения, которые переполняют ваш буфер. (Если вы новичок в C и хотите понять, что я имею в виду, попробуйте поэкспериментировать с настройкой row и column для 25, чтобы начать с. Ваша программа будет работать. Но затем посмотрите, что произойдет, когда вы попытаетесь перейти более массив 25 на 25. О, нет, код снова ломается!).

2. Динамически распределять память, используя malloc.

Объявите 2d массив следующим образом:

int **my_array;

Как только вы получите row, вы malloc(sizeof(int *) * row);, затем вы перебираете my_array, выделяя столбцы. Если все это звучит совершенно чуждо вам, я рекомендую проверить Руководство Beej по программированию на C в разделе указателей. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...