Estou tentando obter um programa para permitir que um usuário insira uma palavra ou caractere, armazene-o e imprima-o até que o usuário digite novamente, saindo do programa. Meu código fica assim:
#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;
}
O problema é que eu continuo recebendo a impressão da sequência de entrada, mesmo quando a entrada do usuário (cheque) corresponde ao original (entrada). Estou comparando os dois incorretamente?
strcmp()
retornar zero quando suas entradas são iguais explica como comparar seqüências de caracteres para igualdade, desigualdade, menor que, maior que, menor que ou igual e maior que ou igual. Nem todas as comparações de strings são para igualdade. As comparações sensíveis a maiúsculas e minúsculas são diferentes novamente; outras comparações especiais (ordem do dicionário, por exemplo) requerem comparadores mais especializados e existem expressões regulares para comparações ainda mais complexas.
gets()
é um não-go. Também foi removida do padrão desde C11 -> Por favor, leia Por que a função gets é tão perigosa que não deve ser usada?
gets( )
foi removido do padrão. Use emfgets( )
vez disso.