Funzione strcmp

di il
4 risposte

Funzione strcmp

Buongiorno, avrei bisogno di aiuto riguardo la funzione strcmp. In seguito alla lettura di un carattere considerandolo come stringa ("%s" perché "%c" viene rilevato come errore") l'ho confrontato in un ciclo for che verifica i caratteri di una stringa già assegnata, non da utente. Il problema è che il confronto
z=strcmp(tent,str2[j]);
genera un warning con la seguente frase: "Passing argument 2 of 'strcmp' makes pointer from integer without a cast".
Dichiarazione delle variabili in questione:
char str[]="matematica",str2[strlen(str)],tent[DIM],cont=0,stato=0;
(DIM=20)
Ciclo for e stampa della stringa:
for (j=0;j<strlen(str);j++) {
		//if (tent==str2[j])
		z=strcmp(tent,str2[j]);
		if (z==0)
		str2[j]=tent;
	}
	printf("%s",str2);
Potreste aiutarmi? Grazie.

4 Risposte

  • Re: Funzione strcmp

    Stai facendo confusione. strcmp confronta due stringhe (due array di char).

    Se hai str e str2 scrivi

    if(strcmp(str, str2) == 0)
  • Re: Funzione strcmp

    oregon ha scritto:


    Stai facendo confusione. strcmp confronta due stringhe (due array di char).

    Se hai str e str2 scrivi

    if(strcmp(str, str2) == 0)
    Grazie, volevo capire esattamente questo. Nel mio caso sto confrontando un carattere di tipo char con una array di char, di conseguenza non funziona. E se volessi comunque effettuare il confronto? Esempio l'utente inserisce una lettera e nel ciclo viene verificata la sua presenza in una determinata stringa. Chiedo perché con un semplice confronto non funziona.
  • Re: Funzione strcmp

    Allora non usare cicli ma la funzione

    strchr

    Vedi la documentazione per l'uso
  • Re: Funzione strcmp

    oregon ha scritto:


    Allora non usare cicli ma la funzione

    strchr

    Vedi la documentazione per l'uso
    Grazie dell'aiuto, non conoscevo la funzione strchr.
Devi accedere o registrarti per scrivere nel forum
4 risposte