Salve a tutti ragazzi sono un nuovo iscritto di questo bel sito (che più volte mi ha salvato la vita)
Passando al mio quesito, come da titolo non riesco a passare una stringa ad una funzione, lo so che ci sono già state molte discussioni riguardo a questo problema ma proprio non capisco. Ho provato a fare un programmino per l'università, in pratica il gioco dell'impiccato ma quando provo a passare una stringa ad una funzione mi passa solo il primo carattere e non so perchè.
questo è il mio codice:
#include <stdio.h>
#include <string.h>
#define dim 300
#define dim1 15
int anagramma (char* s2,int* frequenza) {
int i,uguali=1,frequenza2[dim]={0};
//guardo il numero e il tipo di lettera nella stringa s2
for (i=0;s2[i]!='\0';i++) {
frequenza2[s2[i]]++;
//confronto le due stringhe
for (i=0;i<dim;i++) {
if (frequenza[i]!=frequenza2[i]) {
uguali=0;
}
}
if (uguali==1) {
return 1;
}
else
return 0;
}
}
int main (void) {
char s1[dim1],c,s2[dim1]={0};
int i,frequenza[dim]={0},j=0,frequenza2[dim]={0},k,lunghezza;
printf ("utente 1 digiti una parola composta da un massimo di 15 caratteri");
scanf ("%s",s1);
lunghezza=strlen(s1);
for (i=0;i<lunghezza;i++) {
frequenza[s1[i]]++;
}
i=0;
while (i<5) {
//tentativo utente 2
printf ("digita una lettera ");
scanf (" %c",&c);
//se la lettera appartiene alla stringa s1 inserisce il carattere in una stringa,richiama la funzione e controlla se tutte le lettere appartengono alla stringa s1
if (frequenza[c]!=0) {
s2[j]=c;
j++;
}
//altrimenti incrementa il contatore degli errori.
else if (frequenza[c]==0) {
printf ("hai commesso un errore,riprova (hai un massimo di 5 possibilità).\n");
i++;
}
//se il programma ha lo stesso numero di lettere e le stesse lettere
if (anagramma(s2,frequenza)==1)
break;
//esce dal ciclo
}
printf ("\n\n\n\n");
if (i>=5) {
printf ("hai perso ");
}
else
printf ("COMPLIMENTI HAI VINTO!!");
}
Vi ringrazio molto in anticipo, spero di aver reso abbastanza comprensibile il programma.