Ciao,
ho finito di leggere la strstr e a quanto pare sembra funzionarmi (il programma viene compilato ed eseguito senza probemi) , solo che non ho capito una cosa: cosa devo scrivere per far incrementare il tot2 a seconda delnumero di volte in cui la parola compare nella stringa?
codice:
//Numero di parole uguali in una frase
#include <stdio.h>
#include <string.h>
int main()
{
char parola [25];
char frase [500];
int cnt, tot1=0, tot2=0; //cnt serve da contatore, tot1 indica il numero totale di parole mentra tot2 indica il numero di parole uguali
printf("Scrivi una parola: \n");
scanf("%s", &parola);
while(getchar()!='\n');
printf("Scrivi una frase: \n");
fgets(frase, 500, stdin); //La funzione fgets() legge una linea dallo stream immagazzinandola nel buffer puntato da s
for (cnt = 0; cnt < strlen(frase); cnt++) //strlen() - calcola la lunghezza di una stringa
{
if(frase[cnt] ==' ')
tot1++;
}
//La funzione strstr serve per verificare se esiste una sottostringa all'interno della stringa di partenza.
//La sua sintassi è char *strstr(const char *haystack, const char *needle);
//Dove haystack (lett. 'pagliaio') è la stringa all'interno della quale cercare,
//Mentre needle (lett.'ago') è la stringa da cercare.
//La funzione ritorna:
//1)Un puntatore intero, che rappresenta la zona di memoria in cui è stata trovatala sottostringa, nel caso in cui la sottostringa dovesse essere trovata;
//2)NULL nel caso in cui la sottostringa non dovesse essere trovata.
if (strstr(frase,parola)) // Equivale a scrivere if (strstr(s1,s2) != 0) ovvero se il valore di ritorno della funzione non è NULL (cioè che ha trvato qualcosa)
{
printf ("Stringa \"%s\" trovata all'interno di \"%s\", inposizione %d\n",parola,frase,(strstr(frase,parola)-frase));
tot2++;
}
else //Entra nell'else se il valore di ritorno della funzione è NULL (cioè che non ha trovato niente)
printf ("Stringa \"%s\" non trovata ““all'interno di \"%s\"\n",parola,frase);
printf("\nIl numero totale di parole presenti nella frase sono %d e di '%s' cene sono: %d", tot1, parola, tot2);
printf("\n\n");
system ("pause");
return 0;
}
Ciao e grazie