Usiłuję uzyskać program, który pozwoli użytkownikowi wprowadzić słowo lub znak, zapisać je, a następnie wydrukować, dopóki użytkownik nie wpisze go ponownie, wychodząc z programu. Mój kod wygląda następująco:
#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;
}
Problem polega na tym, że ciągle otrzymuję wydruk ciągu wejściowego, nawet jeśli dane wejściowe użytkownika (sprawdź) są zgodne z oryginałem (dane wejściowe). Czy źle je porównuję?
strcmp()
zwraca zero, gdy jego dane wejściowe są równe, wyjaśnia, jak porównać ciągi dla równości, nierówności, mniejszej, większej niż, mniejszej lub równej i większej niż lub równej. Nie wszystkie porównania ciągów służą równości. Porównywania wielkości liter są znowu różne; inne specjalne porównania (na przykład kolejność słowników) wymagają bardziej wyspecjalizowanych komparatorów, a istnieją jeszcze wyrażenia regularne dla bardziej złożonych porównań.
gets()
. Został również usunięty ze standardu od C11 -> Przeczytaj, dlaczego funkcja gets jest tak niebezpieczna, że nie należy jej używać?
gets( )
został usunięty ze standardu. Użyjfgets( )
zamiast tego.