Я пытаюсь использовать fgets для вызова различных функций в зависимости от того, какую строку вводит пользователь. Я знаю, что мне нужно будет использовать strtok позже, так как будут места для, например, «load 12». Но теперь я смущен тем, что использую strcmp для сравнения введенных строк. Я знаю, что strcmp может использоваться следующим образом:Могу ли я использовать strcmp как логическое?
int check;
char string[10] = "test";
check = strcmp(string, "test");
// Check will be 0 if true
if (check == 0)
{
printf("same string\n");
}
else
{
printf("not the same\n");
}
Может ли это быть логическим значением, как true и false? Если «test» на самом деле «test», логическое значение становится истинным, тогда я буду использовать логическое значение в операциях if
.
Вы не используете его как булево. 'check' является целым числом и сравнивает его с другим целым числом. – Barmar
Да, вы можете, но возвращаемое значение 'strcmp' в булевом контексте было бы истинным (ненулевое значение), если строки ** отличаются ** и false, если они этого не делают ... поэтому я предпочитаю сравнивать' == 0'. –
Если вы хотите протестировать логические значения 'true' и' false', инверсия будет не только инвертирована, но и функция не обязательно возвращает '1', только положительное значение, поэтому вы не можете использовать' if (strcmp (string, "test") == true) ' –