Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - sintassi string compare
Forum - C/C++ - sintassi string compare

Avatar
el cuba libre (Normal User)
Newbie


Messaggi: 20
Iscritto: 07/03/2011

Segnala al moderatore
Postato alle 15:09
Martedì, 17/05/2011
salve a tutti ho bisogno di paragonare due stringhe. ovviamente la prima scelta che mi è venuta in mente è quella di utilizzare la comodossima funzione strcmp, solo che usando questa sintassi non funziona
Codice sorgente - presumibilmente C/C++

  1. char carletto;
  2. const car s='f';
  3. while(strcmp(carletto,s)=0)


mi dice che ho fatto una conversione invalida da char a const char in entrambi i parametri passati

PM
Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 16:14
Martedì, 17/05/2011
No... la funzione strcmp viene usata per comparare due "stringhe"*. Tu non compari due stringhe bensì due caratteri. In C i caratteri vengono definiti così:
Codice sorgente - presumibilmente C/C++

  1. char ch = 'n';

le stringhe invece devono essere racchiuse tra due apici es: "prova stringa". Per poter utilizzare le stringhe in C devi usare un array di char o un puntatore correttamente allocato ;)

* ho racchiuso tra doppi apici la parola stringa, perchè il C è così old che non c'è un tipo di dato che ti permette di definire tipi stringa. Il discorso invece è diverso per i float , int, char .. tutta via però si possono avere degli stessi risultati. Continua a leggere dall'interruzione.

Ultima modifica effettuata da Pitagora il 17/05/2011 alle 16:19


Yep, I came back :P
PM
Avatar
Bonny (Member)
Expert


Messaggi: 435
Iscritto: 24/04/2009

Up
1
Down
V
Segnala al moderatore
Postato alle 16:22
Martedì, 17/05/2011
mi sa che non funziona per vari motivi.... le stringhe nel linguaggio c sono trattate come array di caratteri, per usare la strcmp() devi includere la libreria string.h

esempio:
Codice sorgente - presumibilmente C++

  1. #include<stdio.h>
  2. #include<string.h>
  3.  
  4. int main(){
  5.  
  6. char c[] = {"prova"};
  7. // c è un array di 5 caratteri
  8. printf("%s\n",c);
  9.  
  10. int i = strcmp(c,"ciao");
  11.  
  12. printf("%d\n",i);
  13. //stampa 1 xk prova > ciao
  14. return 0;
  15. }



strcmp(s1, s2)
return 1 se s1>s2
          0 se s1 = s2
        -1 se s1<s2

Ultima modifica effettuata da Bonny il 17/05/2011 alle 16:24


Bonny
PM
Avatar
torn24 (Normal User)
Pro


Messaggi: 137
Iscritto: 04/01/2008

Up
0
Down
V
Segnala al moderatore
Postato alle 14:25
Giovedì, 19/05/2011
ciao ,come ti hanno detto non funziona per diversi motivi !
il primo devi usare array di char e non semplici char
il secondo nella condizione del while non fai un confronto di uguaglianza
ma un assegnazione = invece dovrebbe essere ==


Se si impara dai propri sbagli
non è cosi drammatico  sbagliare !
PM