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]);
}