PDA

Visualizza la versione completa : [C] Warning: comparison between pointer and integer


earp_
13-09-2007, 14:06
salve a tutti,
la situazione la seguente ed un p incasina.

ho una funzione
searchFile(cu, stringToSearch, De);
e il suo prototipo
int searchFile(char *a, char *ToSearch[], int D)

ora dato *stringToSearch[] dichiarato come
char *stringToSearch[] = {"A","B","C"};

all'interno della funzione searchFile ho dichiarato
char FirstRingElement;
e l'assegnazione
FirstRingElement = cu[0];
in questo modo mi visualizza il primo elemento di una stringa (printf("element %c\n",FirstRingElement);) come B per una stringa BAAABC
dove cu
char *cu; questi punta ad una stringa allocata dinamicamente (BAAABC creata tramite malloc)
il problema il seguente se scrivo

if (ToSearch[1]=="B") funziona tutto regolarmente
ma se scrivo
(ToSearch[1]==FirstRingElement)

dove tramite una printf vedo che FirstRingElement proprio B
mi riporta il seguente warning
warning: comparison between pointer and integer

penso sia dovuto al fatto che tramite una printf visualizzo il contenuto puntato da cu[0]
in questo caso B quindi quando cerco di comparare
ToSearch[1] con FirstRingElement mi riporta l'errore.
Come faccio ad evitare questo warning?
tks

LeleFT
13-09-2007, 14:46
Ma le stringhe non si confrontano utilizzando l'operatore == bens utilizzando strcmp() che ritorna 0 se le stinghe confrontate sono uguali...

Il confronto utilizzando l'operatore == viene effettuato sui puntatori e non sul contenuto.


Ciao. :ciauz:

earp_
13-09-2007, 15:07
grazie ma non mi soddisfa
anche perch se faccio
...strcmp(ToSearch[t],FirstRingElement)...
ho lo stesso un problema.

andbin
13-09-2007, 15:23
Originariamente inviato da earp_
(ToSearch[1]==FirstRingElement)Quindi ToSearch[1] un puntatore a char mentre FirstRingElement solo un char, un carattere. Ovvio che non ti quadra con == e nemmeno con strcmp

earp_
13-09-2007, 15:26
esatto solo un carattere preso da
FirstRingElement = cu[0];

dove cu dichiarato come
char *cu;

andbin
13-09-2007, 15:43
Originariamente inviato da earp_
esatto solo un carattere preso da
FirstRingElement = cu[0];

dove cu dichiarato come
char *cu; Allora devi farti la domanda: vuoi testare solo il primo carattere della stringa (indipendentemente da quelli seguenti) o vuoi testare che la stringa sia proprio lunga 1 carattere uguale a quello?

earp_
13-09-2007, 15:47
vorrei testare solo il primo carattere della stringa (indipendentemente da quelli seguenti)
e mi chiedevo come senza creare quel warining.
tks per la pazienza.

andbin
13-09-2007, 15:57
Originariamente inviato da earp_
vorrei testare solo il primo carattere della stringa (indipendentemente da quelli seguenti)
e mi chiedevo come senza creare quel warining.if (ToSearch[1][0] == FirstRingElement)

earp_
13-09-2007, 16:01
me la spieghi per cortesia?

earp_
13-09-2007, 16:08
anzi se volessi invece individuare solo il primo e il secondo indipendentemente dal resto cambia di molto?

Loading