#arrays #c #string #if-statement
Вопрос:
Я написал приведенный ниже код на языке си, но проблема в том, что (если) всегда выдает мне ложь
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!");
}
он всегда печатает «извините, вашего имени нет в базе данных!», как бы оно ни называлось
Комментарии:
1. Я думаю, вам следует использовать strcmp вместо ==. И fgets всегда добавляет новую строку после введенной строки.
2.
if(name==DB[i])
—>if (strcmp(name, DB[i]) == 0)
Ответ №1:
Два момента:
Во-первых, fgets()
считайте символ новой строки допустимым символом и включите его в строку, скопированную в переданный буфер. Обязательно удалите завершающий символ новой строки из name
буфера. После fgets()
этого , возможно, вы сможете сделать
name[strcspn(name, "n")] = 0;
Во-вторых, в C
, используйте strcmp()
для сравнения двух строк
if (strcmp (name, DB[I]) == 0) {
// strings are same