Sto cercando di ottenere un programma per consentire a un utente di inserire una parola o un carattere, memorizzarlo e quindi stamparlo fino a quando l'utente non lo digita nuovamente, uscendo dal programma. Il mio codice è simile al seguente:
#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;
}
Il problema è che continuo a ottenere la stampa della stringa di input, anche quando l'input dell'utente (controllo) corrisponde all'originale (input). Sto confrontando i due in modo errato?
strcmp()
restituisce zero quando i suoi input sono uguali spiega come confrontare stringhe per uguaglianza, disuguaglianza, minore di, maggiore di, minore di o uguale e maggiore di o uguale. Non tutti i confronti di stringhe sono per uguaglianza. I confronti tra maiuscole e minuscole sono di nuovo diversi; altri confronti speciali (ordine del dizionario, ad esempio) richiedono comparatori più specializzati e vi sono regex per confronti ancora più complessi.
gets()
è un no-go. Inoltre è stato rimosso dallo standard dal C11 -> Leggere Perché la funzione gets è così pericolosa che non dovrebbe essere usata?
gets( )
è stato rimosso dallo standard. Usafgets( )
invece.