我用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的文档