Vous ne pouvez pas comparer les chaînes avec l'opérateur ==
. Ce que vous êtes en train de faire ici compare la valeur de retour de la fonction (l'adresse de cmd
en cas de succès, NULL
en cas d'échec) à l'adresse de la chaîne littérale "exit"
. Cela ne sera jamais vrai.
Vous devriez vérifier la valeur de retour pour NULL
, puis utilisez la fonction strcmp
pour comparer cmd
contre "exit"
:
if ((fgets(cmd,128,stdin)) != NULL &&
(strcmp(cmd,"exit\n") == 0 || strcmp(cmd,"exit\r\n") == 0) {
...
Notez que la fonction fgets
stocke une nouvelle ligne dans le tampon si l'on est lu, nous avons donc besoin pour ajouter cela à la chaîne à vérifier.
essayé avec un printf ("% s", cmd); using la sortie et il imprime vraiment la sortie sans au lieu de se terminer – Pyrromanis
Copie possible de [Chaîne C - Utilisation de l'opérateur d'égalité == pour comparer deux chaînes pour l'égalité] (http://stackoverflow.com/questions/3933614/c-string-using -equality-operator-for-comparison-two-strings-for-égalité) –