Originariamente inviato da Marco di Maio
ho bisogno di fare un programma in C che data in input una stringa(con una scanf) deve contare quante volte quella stringa è presente in un file il cui nome viene passato come parametro all'attivazione del processo (notare che la sequenza di caratteri 'ma' e' presente due volte nella parola 'mamma', ma la parola in cui 'ma' e'
presente deve essere contata una sola volta).
c'è qualcuno che può darmi una mano? :master:
Prova cosi' : una volta compilato il programma eseguilo dalla shell linux digitando
./nome_eseguibile nome_file.txt

codice:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(int argc, char *argv[]){
char stringa[100];
if ( (argc-1) != 1 ){
printf("\nHai passato un numero errato di argomenti al programma,gliene devi passare uno soltanto....!\n\n");
exit (1);
}
printf("Inserisci la stringa da ricercare nel file"\n);
fgest(stringa,99,stdin); /* leggo con fgets la stringa invece che con scanf perchè pone in automatico il terminatore \0 oltre ad essere + "sicura" */
FILE *f;
if ( (f=fopen(argv[1],"r")) == NULL ){
printf("\nImpossibile trovare il file da aprire\n");
getchar();
exit (1);
}
char c;
int i=0,n=0,presente=0;
while ( f != EOF ){
c = fgetc(f);
if (c == stringa[i]){
n=0;
for (i=i+1;i<strlen(stringa);i++){
c = fgetc(f);
if ( c == stringa[i] ) n++;
}
if ( (n-1) == strlen(stringa) ) presente++;
}
i++;
}
printf("la stringà %s è presente %d volte nel file,vengono contate anche le ripetizioni xro'...tipo con la parola mamma!",stringa,presente);
getchar();
fclose(f);
return 0;
}
fammi sapere...