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!
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!
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/
capito, cmq a me dava un problema al secondo parametro a quello s[].
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.
la funzione è questa:
la dichiarazione della prima variabile e 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 variabile s[] è il parametro formale del value della seguente struttura: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};
grazie!!codice://definizione del tipo di dato Token typedef struct { TokenType type; // TokenType. char value[MAX_STRING_LENGTH]; // valore del token. } Token;
Scusa ... il problema, in questo codice, qual è ?
No MP tecnici (non rispondo nemmeno!), usa il forum.
la funzione is_keyword chrasha quando arriva alla funzione strcmp()
A me no ... probabilmente devi controllare il valore di numkey ...
No MP tecnici (non rispondo nemmeno!), usa il forum.
il valore di numkey è 31 ... contai ad uno ad uno gli elementi per essere sicuro che non sbagliassi
E "contasti" male ... le stringhe sono 30 ... l'ultimo elemento è un NULL che non devi utilizzare (a meno di non volere un crash).Originariamente inviato da matteo martis
contai
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.