Oppure

Loading
17/05/11 13:09
el cuba libre
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
char carletto;
const car s='f';
while(strcmp(carletto,s)=0)

mi dice che ho fatto una conversione invalida da char a const char in entrambi i parametri passati
aaa
17/05/11 14:14
Pitagora
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ì:
 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 17/05/11 14:19
aaa
17/05/11 14:22
Bonny
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:
#include<stdio.h>
#include<string.h>

int main(){

char c[] = {"prova"};
// c è un array di 5 caratteri
printf("%s\n",c);

int i = strcmp(c,"ciao");

printf("%d\n",i);
//stampa 1 xk prova > ciao
return 0;
}


strcmp(s1, s2)
return 1 se s1>s2
0 se s1 = s2
-1 se s1<s2
Ultima modifica effettuata da Bonny 17/05/11 14:24
aaa
19/05/11 12:25
torn24
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 ==
aaa