在C语言中询问用户他的名字,如果名字在DB中,则打印"欢迎(名称)",如果没有打印"名称不在DB中"



我用c语言写了下面的代码,但问题是(if)总是给我false

char DB[][50]={"ahmed alla","Shady Ibrahim","Sara Sedky","Mohamed Ezz"};
char name[50];
fgets(name,50,stdin);
int flag=1;
for(int i=0;i<4;i++)
{
if(name==DB[i])
{
flag=0;
printf("welcome %s n",name);
}
}
if(flag)
{
printf("sorry your name is not in the DB!");
}

总是打印"对不起,您的名字不在数据库中!"不管名字是什么

两点:

首先,fgets()将换行符视为有效字符,并将其包含在复制到缓冲区传递的字符串中。确保从name缓冲区中删除尾随换行符。在fgets()之后,可能你可以做

name[strcspn(name, "n")] = 0;

strcspn.

第二,在C中,使用strcmp()比较两个字符串
if (strcmp (name, DB[I]) == 0) {
// strings are same

关于strcmp的文档

最新更新