Восстановление матрицы столбцов / строк из файла - PullRequest
0 голосов
/ 22 декабря 2018

так что у меня есть эта программа, которая сканирует и печатает матрицу из файла.В любом случае программа, которая у меня есть, работает с нормальной матрицей, я имею в виду квадратную матрицу, но теперь я хочу сделать ручную матрицу, я имею в виду, что я должен ввести количество строк / столбцов, а затем я вызываю строки и столбцы в основном.Таким образом, программа ниже объясняет ситуацию

int recuperation (int t[][20], char *nomFichier){
    int nbElement=0 ,i,j,nbElement2=0;
    FILE *fp;
    fp=fopen(nomFichier,"r");
    if(fp!=NULL)
    {
        fscanf(fp,"%d\n",&nbElement);
        fscanf(fp,"%d\n",&nbElement2);
        if(nbElement && nbElement2)
        {
            for(i=1;i<=nbElement;i++)
            {
               for(j=1;j<=nbElement2;j++)
               {
                   fscanf(fp,"%d",&t[i-1][j-1]);
               }


            }
        }
    }
    else
        printf("\n Fichier vide \n");
    return nbElement;
}

Вы видите возврат?nbElement - это количество строк, но я также хочу вернуть количество столбцов, то есть nbElement2.Потому что позже в main () мне нужно вызвать эту функцию, набрав: l = recuperation (t, txtfile), но я не могу вызвать столбцы, так как я вернул только 1 значение.Надеюсь, вы поняли, о чем я, спасибо.

1 Ответ

0 голосов
/ 22 декабря 2018

Лучше всего предоставить столбцы и строки в качестве указателей на функцию.Таким образом, когда вы присваиваете значения этим переменным, они тоже меняются вне функции.

int recuperation (int t[][20], char *nomFichier, int * rows, int * columns){
    int i,j;
    FILE *fp;
    fp=fopen(nomFichier,"r");
    if(fp!=NULL)
    {
        fscanf(fp,"%d\n",rows);
        fscanf(fp,"%d\n",columns); // already a pointer
        if(*rows && *columns) // dereference the pointer to get the value
        {
            for(i=1;i<=*rows;i++)
            {
               for(j=1;j<=*columns;j++)
               {
                   fscanf(fp,"%d",&t[i-1][j-1]);
               }


            }
        }
    }
    else
        printf("\n Fichier vide \n");
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...