Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    [c] comparare tra due variabili

    Salve,
    devo comparare il valore di una variabile
    char *key[] con il valore di una variabile char s[],
    ma non mi viene.
    alla variabile s faccio il casting per farlo diventare char* r,
    ma la strcmp crasha ugualmente.
    grazie!

  2. #2
    edit: letto male.

    la strcmp vuole due char* come parametri

    il tuo char *qualcosa[] è come un char**, infatti il compilatore dovrebbe segnalartelo.
    all that you need:
    http://www.cplusplus.com/reference/clibrary/

  3. #3
    capito, cmq a me dava un problema al secondo parametro a quello s[].

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Il fatto è che sono tipi di dati diversi e non puoi confrontarli.

    Mostra il codice che utilizza quei dati e ne parliamo meglio ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    la funzione è questa:
    codice:
    Bool is_keyword(char s[]) {
     int i; 
    char* r; 
    
    r = (char* ) s; 
    Bool is_key = FALSE; 
    
    for(i = 0; i < numkey; i++) 
       if (strcmp(keywords[i],s)==0) 
             is_key = TRUE; 
    
    return is_key; 
    
    }
    la dichiarazione della prima variabile e questa:
    codice:
    / variabile globale per le parole riservate del linguaggio
    char *keywords[]={"auto","break","case", "const", "continue","default", "do","double","else","enum","extern","float", "for", "goto", "if", "int","long","register","return","short","signed", "sizeof", "static", "struct","switch","typedef","unsigned", "void", "volatile","while",NULL};
    la variabile s[] è il parametro formale del value della seguente struttura:

    codice:
    //definizione del tipo di dato Token 
    typedef struct { TokenType type; // TokenType. 
                          char value[MAX_STRING_LENGTH]; // valore del token. } Token;
    grazie!!

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Scusa ... il problema, in questo codice, qual è ?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    la funzione is_keyword chrasha quando arriva alla funzione strcmp()

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    A me no ... probabilmente devi controllare il valore di numkey ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    il valore di numkey è 31 ... contai ad uno ad uno gli elementi per essere sicuro che non sbagliassi

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Originariamente inviato da matteo martis
    contai
    E "contasti" male ... le stringhe sono 30 ... l'ultimo elemento è un NULL che non devi utilizzare (a meno di non volere un crash).

    Quel NULL potrebbe servire come "tappo" per finire i confronti, ma il codice dovrebbe essere diverso (a proposito, tu perché hai aggiunto quel NULL?)

    Ad esempio, un codice che utilizza il NULL evitando di sapere quante sono le parole è

    codice:
    	int i=0; 
    	while(keywords[i])
    		if(strcmp(keywords[i++],s)==0) 
    			is_key = 1;
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.