Я намагаюся отримати програму, щоб дозволити користувачеві ввести слово чи символ, зберегти його та потім надрукувати, поки користувач не введе його знову, вийшовши з програми. Мій код виглядає приблизно так:
#include <stdio.h>
int main()
{
char input[40];
char check[40];
int i=0;
printf("Hello!\nPlease enter a word or character:\n");
gets(input);
printf("I will now repeat this until you type it back to me.\n");
while (check != input)
{
printf("%s\n", input);
gets(check);
}
printf("Good bye!");
return 0;
}
Проблема полягає в тому, що я продовжую отримувати друк вхідного рядка, навіть коли введення користувачем (перевірка) відповідає оригіналу (вводу). Чи порівнюю я ці два?
strcmp()
повертає нуль, коли його вхідні дані рівні" пояснює, як порівнювати рядки для рівності, нерівності, меншої, більшої, меншої або однакової та більшої або рівної. Не всі порівняння рядків є для рівності. Порівняння, що враховують регістр, знову відрізняються; інші спеціальні порівняння (порядок словника, наприклад) вимагають більш спеціалізованих компараторів, а для ще складніших порівнянь існують регулярні виразки.
gets()
є. Він також був видалений зі стандарту з C11 -> Будь ласка, прочитайте Чому функція get настільки небезпечна, що її не слід використовувати?
gets( )
було видалено зі стандарту. Використовуйтеfgets( )
замість цього.