View Full Version : [C] Confronto tra stringhe ?
Ciao a tutti...ho un problema banale, devo confrontare una variabile CHAR con una stringa fissa, come posso fare ?
Pensavo di fare così:
trovato = strstr ( cp->id , "FISSO");
dove
-trovato è una bool,
-id è un campo char *
-cp è una variabile control *
ossia devo confrontare un char con una stringa fissa.
con Strstr non mi torna mai nulla, ho ovviato confrontando carattere per carattere tutti i valori di cp->id:
if (cp->id[0] == 'F' && cp->id[1] == 'I' && ...
però è davvero brutto....come posso sistemare ?
NAME
strcmp, strncmp - compare two strings
SYNOPSIS
#include <string.h>
int strcmp(const char *s1, const char *s2);
int strncmp(const char *s1, const char *s2, size_t n);
DESCRIPTION
The strcmp() function compares the two strings s1 and s2. It returns an integer less than, equal to, or greater than zero if s1 is found, respectively, to be less than, to match, or be greater than s2.
The strncmp() function is similar, except it only compares the first (at most) n characters of s1 and s2.
RETURN VALUE
The strcmp() and strncmp() functions return an integer less than, equal to, or greater than zero if s1 (or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2.
ma non hai un manuale o qualcosa del genere? queste sono funzioni base del C
Marco Giunio Silano
28-07-2006, 12:16
Ciao a tutti...ho un problema banale, devo confrontare una variabile CHAR con una stringa fissa, come posso fare ?
Pensavo di fare così:
trovato = strstr ( cp->id , "FISSO");
dove
-trovato è una bool,
-id è un campo char *
-cp è una variabile control *
ossia devo confrontare un char con una stringa fissa.
con Strstr non mi torna mai nulla, ho ovviato confrontando carattere per carattere tutti i valori di cp->id:
if (cp->id[0] == 'F' && cp->id[1] == 'I' && ...
però è davvero brutto....come posso sistemare ?
nn ho capito, devi verificare se due buffer sn identici, o se un buffer contiene un byte?
confronto fra due buffer: memcmp/strcmp
ricerca presenza byte in un buffer: strchr
poi vedi il menuale per come usarle.
Ho provato anche strcmp, ovvio che prima di postare qua ho usato internet (è sempre la prima cosa che faccio quando ho un dubbio su qualcosa) e ho trovato un pò di info, però visto che non riesco a farlo funzionare ho chiesto a voi un esempio, niente di che.
Avevo provato con:
if (strcmp ( cp->id , "FISSO") != 0 );
ma anche così non entra mai nella condizione....come se fosse sempre 0 il risultato della comparazione.
if (strcmp ( cp->id , "FISSO") != 0 );Se le due stringhe sono diverse, esegue l'istruzione "vuota" a causa del ';'. ;)
Marco Giunio Silano
28-07-2006, 13:08
Se le due stringhe sono diverse, esegue l'istruzione "vuota" a causa del ';'. ;)
Quoto, in più, se il buffer dinamico non è concluso con 0x00, la tua strcmp non funzionerà mai!
Lo 0x00 c'è....uhm,farò qualche altro esperimento, cmq mi dite che così:
if (strcmp ( cp->id , "FISSO") != 0)
{
istruzioni
}
dovrebbe andare ?
appena posso provo, per ora grazie mille.
Lo 0x00 c'è....uhm,farò qualche altro esperimento, cmq mi dite che così:
if (strcmp ( cp->id , "FISSO") != 0)
{
istruzioni
}
dovrebbe andare ?
appena posso provo, per ora grazie mille.
solo un'osservazione... in questo modo entri nell'if se le stringhe sono diverse, non so se è quello che vuoi ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.