2016-03-28 2 views
0

У меня есть 5 строк. Мне нужно собрать все пять сразу.сравнить более двух строк

char set_password1[5] = "1111"; 
char set_password2[5] = "2222"; 
char set_password3[5] = "3333"; 
char set_password4[5] = "4444"; 
char set_password5[5] = "5555"; 

if(!strcmp(Entered_Password,set_password1)) 
{ 
} 

Если какой-либо из этих паролей совпадает с Enter _Password, мне нужно что-то сделать. так что я должен написать пять таких утверждений, как это

if(!strcmp(Entered_Password,set_password1)) 
{ 
} 
if(!strcmp(Entered_Password,set_password2)) 
{ 
} 
if(!strcmp(Entered_Password,set_password3)) 
{ 
} 
if(!strcmp(Entered_Password,set_password4)) 
{ 
} 
if(!strcmp(Entered_Password,set_password5)) 
{ 
} 

или есть какой-либо другой способ. Я уже пробовал этот путь, но это не сработало.

if(!strcmp(Entered_Password, (set_password1||set_password2||set_password3||set_password4||set_password5)) 
{ 
} 
+2

Создайте массив строк и проведите через них? – CinCout

+1

Вы можете сопоставить использование концепции цикла –

+1

Вы не можете использовать строки 'switch'on ... – tofro

ответ

-2

Заменить линию

if(!strcmp(Entered_Password, (set_password1||set_password2||set_password3||set_password4||set_password5)) 

с

if (!(strcmp(Entered_Password, set_password1) && strcmp(Entered_Password,set_password2) && (strcmp(Entered_Password,set_password3) && strcmp(Entered_Password,set_password4) && strcmp(Entered_Password,set_password5))) 

Вы должны сравнить каждую переменную отдельно с исходной строкой.

+0

Вы не имели в виду '&&'? –

+0

Плакат сказал: «Если какой-либо из этих паролей совпадает с Enter _Password, мне нужно что-то сделать». ... Так что это должно быть || не &&. @MohitJain – Mukit09

+0

@MukitChowdhury Ответ исправлен. 'strcmp' возвращает' 0', если строки совпадают. Так по закону де-Моргана (https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8&client=ubuntu#q=de%20morgan%27s%20law), '||' становиться '&&' –

2

В качестве альтернативы вы можете использовать 2D-массив.

char password[5][5] = {"1111", "22222", "3333", "44444", "55555"}; 
int match = 0; 

for(int i = 0; i < 5; i++) 
{ 
    if(strcmp(password[i], user_password) == 0) 
    { 
    match = 1; 
    break; 
    } 
} 

if(match == 1) 
{ 
    //do your action 
} 
Смежные вопросы