Ciao a tutti, ho scritto questo programma ma non mi funziona. Non mi restituisce quante volte la stringa è contenuta nel file. Ho provato a compilare il programma con ubuntu e li funziona invece quando lo compilo con il mio mac non funziona correttamente. Ho anche provato a fare una verifica stampando la stringa che dovrebbe leggere dal file ma stampa un'altra cosa al suo posto! Qualcuno potrebbe aiutarmi a risolvere questo problema?? Grazie.
codice:
/* Creare un programma in linguaggio C che, data una stringa immessa da testiera calcoli quante volte la stringa è presente in un file di testo.*/
#include <stdio.h>
#define M 100
int stringa (char s[], char t[]);
int main ()
{
char s[M], t[M];
int a;
FILE *fp;
//primo modo:
if((fp=fopen("testo.txt", "r"))==NULL)
{
printf("Il file non può essere aperto.\n");
}
else
{
printf("Inserisci la stringa da cercare:\n");
scanf("%s", t);
fscanf(fp, "%s", s);
a=stringa(s,t);
printf("La stringa è contenuta %d volte\n", a);
fprintf(fp, "La stringa è contenuta %d volte\n", a);
fclose(fp);
}
} //main
/* secondo modo:
fp=fopen("fileditesto.txt", "w");
printf("Inserisci un testo:\n");
scanf("%s", s);
fprintf(fp, "%s\n", s);l
printf("Inserisci la stringa da cercare:\n");
scanf("%s", t);
fprintf(fp, "%s\n", t);
a=stringa(s,t);
printf("La stringa è contenuta %d volte\n", a);
fprintf(fp, "La stringa è contenuta %d volte\n", a);
fclose(fp);
}
*/
int stringa (char s[], char t[])
{
int i, j, k, cont=0;
for (i=0; s[i]!='\0'; i++)
{
for (j=i, k=0; t[k]!='\0' && s[j]==t[k]; j++, k++)
{
;
}
if (t[k]=='\0')
{
cont++;
}
}
if (cont==0)
{
cont=-1;
}
return cont;
}