Я работаю над домашним заданием, посвященным строкам для курса «Введение в 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");
}
Когда решение = "ФЛОРИДА" и предположение = "ФОРЛИДА", должно быть напечатано "Вы угадали неправильно", но вместо этого будет "Поздравляем, вы угадали правильно".
return x
несколько раз в одной функции. Одногоreturn x;
в конце тела функции достаточно, и это более безопасно. - person RobertS supports Monica Cellio   schedule 17.10.2019