- Messaggi: 4
- Ringraziamenti ricevuti 0
Aiuto comparazione stringhe con STRCMP
8 Anni 10 Mesi fa #1
da capelot81
Aiuto comparazione stringhe con STRCMP è stato creato da capelot81
Ciao,
usando la funzione strcmp() in 2 modi diversi ottengo risultati diversi.
Non riesco a capire perchè nel primo caso ottengo che le due stringe sono uguali (quindi x=0), invece nel secondo caso no. A me sembra esattamente la stessa cosa. Aiutatemi! Grazie
Sto usando PIC18F26K22 e compilatore C18.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(void)
{
int x;
char abc[]="abc";
char stringa[]="abc";
x=strcmp(abc,stringa); // in questo caso ottengo x=0
x=strcmp(abc,"abc"); // in questo caso x assume valori assurdi tipo -93 o 64
}
usando la funzione strcmp() in 2 modi diversi ottengo risultati diversi.
Non riesco a capire perchè nel primo caso ottengo che le due stringe sono uguali (quindi x=0), invece nel secondo caso no. A me sembra esattamente la stessa cosa. Aiutatemi! Grazie
Sto usando PIC18F26K22 e compilatore C18.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main(void)
{
int x;
char abc[]="abc";
char stringa[]="abc";
x=strcmp(abc,stringa); // in questo caso ottengo x=0
x=strcmp(abc,"abc"); // in questo caso x assume valori assurdi tipo -93 o 64
}
Si prega Accedi o Crea un account a partecipare alla conversazione.
- capelot81
- Autore della discussione
- New Member
Riduci
Di più
8 Anni 10 Mesi fa #2
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Aiuto comparazione stringhe con STRCMP
Mi aspetto che relativamente al secondo caso hai una warning relativamente a conversioni "strane".
Sebbene "abc" sia una stringa mi aspetto che la funzione accetti puntatori ad array di caratteri e non stringhe costanti.
Per cui nel secondo caso hai una disuguaglianza.
Saluti,
Mauro
Sebbene "abc" sia una stringa mi aspetto che la funzione accetti puntatori ad array di caratteri e non stringhe costanti.
Per cui nel secondo caso hai una disuguaglianza.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
8 Anni 10 Mesi fa #3
da permax1958
Risposta da permax1958 al topic Aiuto comparazione stringhe con STRCMP
Ciao
se ricordo bene strcmp() compara due stringhe che terminano col carattere NULL \0
nel tuo secondo caso "abc" non credo sia una stringa vera col terminatore \0 mentre i due array come li hai dichiarati contengono effetivamente due stringhe uguali col terminatore \0 (anche se non lo vedi) "abc\0" (\0 viene aggiunto dal compilatore) mentre nel secondo caso non viene aggiunto sempre se ricordo bene, dovrei guardare nei manuali.
se ricordo bene strcmp() compara due stringhe che terminano col carattere NULL \0
nel tuo secondo caso "abc" non credo sia una stringa vera col terminatore \0 mentre i due array come li hai dichiarati contengono effetivamente due stringhe uguali col terminatore \0 (anche se non lo vedi) "abc\0" (\0 viene aggiunto dal compilatore) mentre nel secondo caso non viene aggiunto sempre se ricordo bene, dovrei guardare nei manuali.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- permax1958
- Premium Member
Riduci
Di più
- Messaggi: 91
- Ringraziamenti ricevuti 16
8 Anni 10 Mesi fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Aiuto comparazione stringhe con STRCMP
Si effettivamente il secondo compare non ha il carattere \0 .
Nel caso di assegnazione "abc" il compilatore aggiunge automaticamente il carattere di terminazione.
Nel caso del compare il carattere di terminazione manca ma credo che la funzione, aspettandosi un puntatore a caratteri e ricevendo una stringa costante interpreti male i dati in ingresso oltre a non avere neanche il \0.
Saluti,
Mauro
Nel caso di assegnazione "abc" il compilatore aggiunge automaticamente il carattere di terminazione.
Nel caso del compare il carattere di terminazione manca ma credo che la funzione, aspettandosi un puntatore a caratteri e ricevendo una stringa costante interpreti male i dati in ingresso oltre a non avere neanche il \0.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
8 Anni 10 Mesi fa #5
da capelot81
Risposta da capelot81 al topic Aiuto comparazione stringhe con STRCMP
Quindi secondo voi come posso fare a comparare un array di caratteri con una stringa costante?
Grazie
Grazie
Si prega Accedi o Crea un account a partecipare alla conversazione.
- capelot81
- Autore della discussione
- New Member
Riduci
Di più
- Messaggi: 4
- Ringraziamenti ricevuti 0
Moderatori: Mauro Laurenti, StefA
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.