执行完成后函数崩溃主要是-C

时间:2018-11-17 01:39:22

标签: c crash main

我制作了一个简单的程序,要求用户输入称为arp的矩阵的列数,因为那样,当程序要求用户输入数字以便可以在上找到匹配项时,而不是将分配给内存的所有10列与 array与指针类型进行比较的结果存储在数组中。

当用户输入列大小定义2时,这里出现问题。在 p3() 的最后一个函数执行其工作之前,所有工作都很好,然后甚至没有返回到main执行在那里定义的无限循环。我曾尝试删除指针,但没有用;我还尝试删除了代码的其他部分,但还是一无所获...

更新:试图删除该功能以查找元素felmnt()并保持不变。

这里是 Buggy 代码:

#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;
}

0 个答案:

没有答案