J'essaie d'obtenir un programme pour permettre à un utilisateur d'entrer un mot ou un caractère, de le stocker, puis de l'imprimer jusqu'à ce que l'utilisateur le saisisse à nouveau, quittant le programme. Mon code ressemble à ceci:
#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;
}
Le problème est que je continue à obtenir l'impression de la chaîne d'entrée, même lorsque l'entrée de l'utilisateur (chèque) correspond à l'original (entrée). Est-ce que je compare les deux de manière incorrecte?
strcmp()
renvoie zéro lorsque ses entrées sont égales explique comment comparer des chaînes pour l'égalité, l'inégalité, inférieure à, supérieure à, inférieure ou égale et supérieure ou égale. Toutes les comparaisons de chaînes ne sont pas pour l'égalité. Les comparaisons sensibles à la casse sont à nouveau différentes; d'autres comparaisons spéciales (ordre du dictionnaire, par exemple) nécessitent des comparateurs plus spécialisés, et il existe des expressions régulières pour des comparaisons encore plus complexes.
gets()
est interdite. Elle a également été supprimée de la norme depuis C11 -> Veuillez lire Pourquoi la fonction gets est-elle si dangereuse qu'elle ne devrait pas être utilisée?
gets( )
a été retiré de la norme. Utilisezfgets( )
plutôt.