您好,在Strcmp函数中flag的作用是什么?有什么特殊含义么

我编写一个判断一学生是否属于一班级的程序,如下:

#define MAX 5
#define LEN 10
main()
{
int i;
char name[LEN];
static char list [MAX][LEN]={"Zhang","Wang","Li","Tan","Ling"};
printf("Enter your name:");
gets(name);
for(i=0;i<MAX;i++)
if(strcmp(list[i],name)==0)
printf("%s is in our class\n",name);
else
printf("%s is not in our class\n",name);
}

编译没有错误,但在执行时,结果显示:

Enter your name: Zhang
Zhang is in our class
Zhang is not in our class
Zhang is not in our class
Zhang is not in our class
Zhang is not in our class
Press any key to continue

请问这是什么原因?
书上的原程序是:

#define MAX 5
#define LEN 10
main()
{
int i,flag=0;
char name[LEN];
static char list [MAX][LEN]={"Zhang","Wang","Li","Tan","Ling"};
printf("Enter your name:");
gets(name);
for(i=0;i<MAX;i++)
if(strcmp(list[i],name)==0)flag==1;
if(flag==1)
printf("%s is in our class\n",name);
else
printf("%s is not in our class\n",name);

}

和我自己编写的差别是多加了flag,请问这个flag是什么作用?是编写strcmp这个比较功能的函数时必须使用的吗?

胡子哥哥
浏览 343回答 3
3回答

元芳怎么了

flag的作用就是标志着我们是否找到我们输入的名字。你看flag被初始化为0,意思就是在查找之前呢,我们默认是没找到的。当strcmp返回0,表示字符数组中有一个字符和我们输入的相同,那么不就是找到了吗?然后我们就把flag设置成0.那么接着我们再判断flag的值就可以知道我们是否找到字符串了。
打开App,查看更多内容
随时随地看视频慕课网APP