Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C su Linux] Prelevare una stringa da tastiera e confrontarla

    Salve, non riesco a confrontare 2 stringhe, una statica ed una immessa da tastiera.
    Questo il codice:
    codice:
    c = read(STDIN, buf, sizeof(buf));
    
    if ( c > 0 && strcmp(buf, "exit") != 0 ) {
    	...
    }
    else if (strcmp(buf, "exit") == 0) {
    	char* exit_msg = "...";
    }
    In pratica non entra mai nel "else if", perchè la variabile "buf" ha come valore "exit+un carattere strano"

    Sapete dove sbaglio?

  2. #2
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    forse dovresti tenere in considerazione il carattere di terminazione stringa '\0'.

    ciao
    slack? smack!

  3. #3
    secondo me ti porti dietro il carattere "\n"
    DYNAMIC+ [ E-mail ]

    Secondo me non si può fare!

  4. #4
    Originariamente inviato da DYNAM!C+
    secondo me ti porti dietro il carattere "\n"
    Ho capito come risolvere l'osservazione di cacao74, ma con questa come faccio?
    Basta qualcosa del tipo:
    codice:
    if ( strcmp(msg, "exit\0\n") || strcmp(msg, "exit\0") )
    ...
    ?

    ciao

  5. #5
    Utente di HTML.it L'avatar di DydBoy
    Registrato dal
    Jul 2005
    Messaggi
    165
    Anche secondo me ti stai portando dietro il "\n".

    O fai la strcmp con "exit\n" oppure chiami una strtok per pulire la stringa in input.

    Es.

    char *newstring;

    newstring = strtok(buf,"\n\r\t");

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.