PDA

Visualizza la versione completa : [C] Aiuto esercizio sulle stringhe nel file.


Cetty93
11-11-2014, 11:11
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.




/* 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;


}

oregon
11-11-2014, 13:26
Il codice senza i tag CODE non si capisce ...

C'è un "primo modo" e un "secondo modo" ... cosa vuol dire?

E infine, perché non usi la funzione strcmp per confrontare la stringa?

Cetty93
11-11-2014, 13:34
Tag CODE? Comunque ho implementato la funzione in due modi. Nel primo il filr lo creo io precedentemente, nel secondo il file lo apro da terminale.

LeleFT
11-11-2014, 13:47
@Cetty93: quando si posta del codice, questo va inserito all'interno degli appositi tag
... , in modo da mantenerne formattazione e indentazione; così risulta più leggibile.

Ho sistemato io il tuo post.


Ciao. :ciauz:

Cetty93
11-11-2014, 13:54
Ah ok! Grazie mille :)

Loading