Сбой функции Main после завершения выполнения - C - PullRequest
0 голосов
/ 17 ноября 2018

Я сделал эту простую программу, которая просит пользователя ввести количество столбцов, которое будет иметь матрица с именем arp, потому что таким образом, когда программа просит пользователя ввести число, чтобы она могла найти совпадения по числамхранится в массиве без сравнения всех 10 столбцов, выделенных в памяти с массивом , с типом указателя .

Проблема возникает тогда, когда пользователь вводит определение размера столбцов 2. Все работает нормально до того, какПоследняя функция p3() выполняет свою работу, затем она даже не возвращается в main для выполнения определенного там бесконечного цикла.Я попытался удалить указатели и не работал;Я также попытался удалить другие части кода, но все еще ничего ...

Обновление: Попытался удалить функцию, чтобы найти элементы felmnt() и все тот же.

Вот Багги Код:

#include <stdio.h>
#include <stdlib.h>

int loop = 1;

void keepalive(void)
{
    int ckr = 0;
    fflush(stdin);
    printf("\n\n    ******[s]<< CONTINUE | EXIT >>[n]******\n");
    while(printf("    > ") && (ckr = getchar()) != 's' && ckr != 'n') fflush(stdin);
    getchar();
    if(ckr == 'n') loop = 0;
    system("CLS");
}

void felmnt(int *colu, int (*arp)[10])
{
    int nius=0, colmts, x, i, ejct;
    do
    {   // loop to let the user find more elements inside matrix
        colmts=0;
        printf("\n    Insert The Number To Find\n    > ");
        scanf("%d", &nius);
        for(x=0; x<*colu; x++)  // search of element inside matrix
        {
            for(i=0; i<=9; i++)
                if(nius == arp[i][x])
                    colmts++;
        }
        if(colmts>1)  // results printing
        {
            printf("\n    %d Elements Found", colmts);
        }else if(colmts)
        {   
            printf("\n    1 Element Found"); 
        }else 
        {
            printf("\n    Not Found");
        }
        printf("\n    TRY AGAIN? s/n\n    > ");
        ejct=getchar();
        getchar();
    }while(ejct=='s');
}

void mat(int *colu, int (*arp)[10])
{
    int ci, cn, tst=0;
    for(ci=0; ci<*colu; ci++)
    {
        for(cn=0; cn<10; cn++)
        {
            printf("\n    Input The Number [%d][%d]\n    > ", ci+1, cn+1);
            scanf(" %d", &arp[cn][ci]);
        }
    } 
    printf("    Numbers Inside Matrix> ");
    for(ci = 0; ci<*colu; ci++)
    {
        for(cn=0; cn<10; cn++) printf(" %d", arp[cn][ci]);
    }
}

void p3(void)
{       // >>>>main<<<<
    int colu=0;
    while(loop)
    {
        printf("\n    Input The Quantity Of Columns To Use\n    > ");
        scanf("%d", &colu);
        int arp[10][colu];
        mat(&colu, arp);
        felmnt(&colu, arp);
        keepalive();
    }
}

int main(void)
{
    int ck = 0, ndx;
    while(1)
    {    // infinite loop
        p3();
        fflush(stdin);
        printf("\nPause !!!");
        getchar();
    }
    return 0;
}
...