C 以下代码中运行时错误的原因是什么

C 以下代码中运行时错误的原因是什么,c,string,char,strcmp,C,String,Char,Strcmp,我试图解决一个在线法官的问题。下面是问题的代码。当我提交时,法官给出了运行时错误。有人能帮我吗 #include <stdio.h> int main(void) { int a,i,j,flag,pos,flag1,pos1; char team[15]; int score[4]; scanf("%d",&a); while(a--) { for(i=0;i<4;i++) {

我试图解决一个在线法官的问题。下面是问题的代码。当我提交时,法官给出了运行时错误。有人能帮我吗

#include <stdio.h>


int main(void) 

{

    int a,i,j,flag,pos,flag1,pos1;
    char team[15];
    int score[4];
    scanf("%d",&a);
    while(a--)
    {

        for(i=0;i<4;i++)
        {
            scanf("%s",&team[i]);
            scanf("%d",&score[i]);
        }
        for(i=0;i<4;i++)
        {

            if(team[i]=="Barcelona")
            pos=i;
            if(team[i]=="Eibar")
            flag=i;
            if(team[i]=="RealMadrid")
            pos1=i;
            if(team[i]=="Malaga")
            flag1=i;

        }
            if((score[pos]>score[flag]) && (score[flag1]>score[pos1]))
            printf("Barcelona\n");
            else
            printf("RealMadrid\n");
        }
    return 0;
}
在代码中

  scanf("%s",&team[i]);
是错误的,您没有存储字符串的空间。您可以将字符存储在&team[i]指向的内存中,但不能存储以null结尾的字符数组

换句话说,您的团队是一个字符数组,而您似乎需要一个字符数组,比如

#define NAMESIZ 32
#define TEAMSIZ 15

char team[TEAMSIZ][TEAMSIZ] = {0};
然后,正确地使用team[i]boils到一个地址本身可以有所帮助

在此错误之后,还有一个逻辑错误必须修复。您正在使用==运算符来比较字符串,这是不可能的。您需要使用strcmp来比较字符串,即以null结尾的字符数组的内容。

在代码中

scanf("%s",&team[i]); is wrong.
您将团队[15]声明为字符数组,但正在其中存储字符串的数量。 如果你想这样做

scanf("%s",&team[i])
然后声明一个二维字符数组,如

char arrayOfWords[NUMBER_OF_WORDS][MAX_SIZE_OF_WORD];
然后您需要按以下方式输入字符串: int i

要打印或处理此阵列,您需要执行以下操作:

for (i=0; i<NUMBER_OF_WORDS; i++) {
    printf ("%s" , arrayOfWords[i]);
}

欢迎来到堆栈溢出。请花点时间阅读并参考您可以在此处提问的内容和方式。请不要在此处询问有关在线代码判断引擎的问题。任何人都不太可能从他们的测试用例中告诉您失败的地方,因为这些通常不会被披露。即使您测试的是在本地环境中运行的,您也可能错过了测试在线挑战中应用的一些边缘案例。要有创造力,努力找到他们。此外,从长远来看,这些问题可能没有什么价值,除了在网上作弊,什么都学不到。巴塞罗那是一个字符*。您似乎对字符串和字符之间的区别有很多误解。原因是调试失败。感谢您的回答,我将实现它
for (i=0; i<NUMBER_OF_WORDS; i++) {
    printf ("%s" , arrayOfWords[i]);
}