Я работаю над домашним заданием, концентрируясь на строках для вступления в класс C. У меня возникли проблемы с использованием функции strcmp () в операторе if, в пользовательской функции.
Назначение требует, чтобы мы использовали пользовательскую функцию (моя - Check ()), чтобы проверить,строки одинаковы (сравнение введенной пользователем строки со строкой из файла). По какой-то причине мой профессор хочет, чтобы Check () возвращала 1, если строки совпадают, и 2, если строки не совпадают, хотя, насколько мне известно, strcmp () уже возвращает 0, если строки совпадают, и некоторое другое значение, если они совпадают. нет.
Как только моя функция Check () возвращает значение (x = 1 для совпадения, x = 2 для отсутствия совпадения), я запускаю это значение x через другой оператор if в моей основной функции, который должен вывести «Вы правы»«для x = 1 и« Вы неверны »для x = 2.
Проблема, с которой я сталкиваюсь, заключается в том, что независимо от того, совпадают строки или нет, мое условие в моей основной функции всегда сообщает пользователю, чтоправильно, то есть строки совпадают. Я предполагаю, что проблема заключается в моей функции Check () и моем использовании strcmp (), так как я не совсем знаком с тем, как работает strcmp ().
Я уже пытался изменить свое условное выражение в Check (), поэтомучто у меня есть if (strcmp (решение, предположение) == 0), а затем else if (strcmp (решение, предположение)! = 0), и это не решило мою проблему.
Моя пользовательская функция:
int Check(char solution[], char guess[])
{
if (strcmp(solution, guess) == 0)
{
int x = 1;
return x;
}
else
{
int x = 2;
return x;
}
}
Это передается в мою основную функцию следующим образом:
Check(solution, guess);
if (x == 1)
{
printf("Congratulations, you guessed correctly");
}
else if (x == 2)
{
printf("You guessed incorrectly");
}
Когда solution = "FLORIDA" и предположить = "FORLIDA", "Вы ошиблись" должны быть напечатаны, но«Поздравляю, вы правильно догадались» - вместо этого.