 |
DeepBlue |
tired guy

Registered: Sep 2003
Posts: 4258 (0.54 al dì)
Location: CSN
Corso: Info tlc
Anno:
Time Online: 52 Days, 8:40:31 [...]
Status: Offline
Edit | Report | IP: Logged |
Ho sfornato una prima versione del programmino.
Ho utilizzato i puntatori pero`, ma magari trai spunto o convinci il tuo capo 
Volendo il programma si potrebbe ottimizzare ancora un o', vedi tu 
Se non si legge qui sotto, vai qui
#include <stdio.h>
int main (int argc, char *argv[]){
FILE *fp;
int i=0, z=0, occorrenza=0;
char *stringa;
int dimensione;
char *buffer;
char *posizione;
char loc_buffer[40]={0};
char ch;
if (argc < 2) {
printf("\nParametro mancante. Usare 'cerca parola_da_cercare'\n");
exit(0);
}
stringa=argv[1]; // assegno a stringa la parola da cercare
dimensione=strlen(stringa); // dimensione della parola
if ((fp=fopen("testo.txt","r"))== NULL){
printf("\nIl file non esiste o e` gia` in uso\n");
exit(0);
}
while (fgetc(fp) != EOF) { // conto i caratteri presenti nel testo
i++;
}
printf("\nSalvataggio buffer");
buffer=(char *)malloc(sizeof(char) * (i+1)); // alloco lo spazio per il buffer
fseek(fp, 0, 0); // mi riposiziono all'inizio del file
i=0;
while ((ch = fgetc(fp)) != EOF) { // carico il buffer
buffer[i]=ch;
i++;
}
printf("\nBuffer salvato, inizio controllo");
for( ; z<=i; z++){ // leggo il contenuto del file
if(buffer[z]==stringa[0]){ // confronto il primo carattere della stringa con i char letti
posizione=&buffer[z]; // salvo la posizione del buffer
strncpy(loc_buffer,posizione,strlen(stringa));
// copio N caratteri su un buffer locale x non sporcare l'altro
if (strcmp(loc_buffer, stringa)==0){ // se trovo la stringa incremento il contatore
occorrenza++;
} // if strcmp
} // il confronto
} // ciclo for
fclose(fp);
free((void *) buffer); // libero la memoria
printf("\nSono state trovate %d occorrenze per la parola %s\n", occorrenza, stringa);
return 0;
}
__________________
~ get Debian! ~ get FreeBSD! ~ get OpenBSD! ~
Last edited by DeepBlue on 30-01-2004 at 13:06
|