我的c程序中出现运行时错误的原因&?

时间:2016-06-29 11:39:43

标签: runtime-error

        #include<stdio.h>
        main()
        {char *names[4];
        int i,a;
        printf("ënter the guests names\n");
               for(i=0;i<=3;i++)
               {
                 scanf("%s",names[i]);
               }
      char *yourname;
      printf("\nenter your name ");
      scanf("%c",yourname);
                    for(i=0;i<=3;i++)
                       {a=strcmp(names[i],yourname);
                         if(a==0)
                         printf("\nwelcome");
                         break;
                       }
     if(a!=0)
     printf("\naccess denied");
     return 0;
     }

这是一个检查你在节目中输入的程序。首先我们给出允许的名字和然后它询问你的名字,它将你的名字与嘉宾名单中的名字进行比较。

我得到运行时错误,plz告诉我校正。我想使用指针串起来所以plz建议在现有程序中进行校正

当我在输入名字后在devc ++中运行该程序时,它会使program.exe停止工作。

2 个答案:

答案 0 :(得分:0)

代码将是这样的:

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

    int main()
    {
        char *names[4];
        int i,a;
        printf("ënter the guests names\n");
        for(i=0;i<=3;i++) {
                names[i] = (char*) malloc(100 * sizeof(char));
            scanf("%s", names[i]);
        }
        char yourname[100];
        printf("\nenter your name ");
        scanf("%s",yourname);
        for(i=0;i<=3;i++) {
            a = strcmp(names[i], yourname);
            if (a == 0) break;
        }
        if (a==0)
            printf("\nwelcome");
        else printf("\naccess denied");

        for(i=0;i<=3;i++)
            free(names[i]);

        return 0;
    }

答案 1 :(得分:0)

您的代码必须格式化,以便我们为您提供更好的答案。

现在,使用gets来获取输入,在for循环中验证guest与您的名字匹配,在找到匹配时停止循环。

#include<stdio.h>
#include<string.h>
int main()
{
    char names[4][20];
    int i = 0;
    int a = 0;
    printf("Enter guests names: \n");

    for(i=0; i<3; i++)
    {
        gets(names[i]);
    }
    char yourname[20];
    printf("\n Enter your name ");
    gets(yourname);

    printf("\n Verify access right:");
    for(i=0; i<3; i++)
    {    
        a=strcmp(names[i], yourname);
        if(a==0)
        {
            printf("\n welcome");
            break;
        }
        else
        {
            printf("\n access denied");
        }
    }  

    return 0;
}

虽然这看起来像是家庭作业。