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; }

Rispondi quotando

