Aiuto comparazione stringhe con STRCMP

8 Anni 9 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
}

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • capelot81
  • New Member
  • New Member
Di più
8 Anni 9 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

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
8 Anni 9 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.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • permax1958
  • Premium Member
  • Premium Member
Di più
8 Anni 9 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

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Avatar di Mauro Laurenti
  • Moderator
  • Moderator
Di più
8 Anni 9 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

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • capelot81
  • New Member
  • New Member
Di più
Moderatori: Mauro LaurentiStefA

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login