PDA

View Full Version : [C++] Aiuto


VBProgramming
12-12-2007, 13:55
Come faccio, con il C/c++, ad aprire un file di testo? E come faccio a cercare una determinata parola sempre in un file di testo? Ad esempio, suponiamo che io voglia trovare la parola "casa" nel file "a.txt". Come faccio? Grazie in anticipo

71104
12-12-2007, 14:10
il modo di fare ciņ tra C e C++ varia parecchio; che linguaggio vuoi usare di preciso?

VBProgramming
12-12-2007, 14:51
il modo di fare ciņ tra C e C++ varia parecchio; che linguaggio vuoi usare di preciso?
C (non C++)

IceCoder
12-12-2007, 14:54
io uso sempre lo stesso metodo:


#include <stdio.h> //PER LE FUNZIONI DI INPUT-OUTPUT
#include <string.h> //PER LE FUNZIONI DELLE STRINGHE DI TESTO

int Cerca(char *a, char *b) //CERCA a IN b
{
int i, j;
if(strlen(a) > strlen(b))
return 0;

for(i = 0; i < strlen(b) - strlen(a); i++)
{
int strIndex = 0;
for(j = 0; j < strlen(a); j++)
{
if(b[i+j] != a[j])
break;
else
strIndex++;
}
if(strIndex == strlen(a))
return 1;
}

return 0;


}


int main()
{
int i = 0;
char testo[1024]; //VARIABILE TESTUALE CONTENENTE MASSIMO 1024 CARATTERI
FILE *f = fopen("c:\pippo.txt", "r"); //APRI IL FILE BELLO IN MODALITA' 'SOLA LETTURA'

if(!f) //SE IL FILE NON VIENE APERTO TERMINA IL PROGRAMMA
return 0;

while(!feof(f)) //FIN QUANDO IL FILE NON E' FINITO
{
testo[i++] = (char)fgetc(f);
}
fclose(f); //CHIUDO IL FILE

//ORA NELLA VARIABILE 'testo' E' CONTENUTO IL FILE (PURCHč IL FILE SIA PIU PICCOLO DI 1024 BYTES)

if(Cerca("casa", testo) == 1) //SE IL FILE CONTIENE LA PAROLA "casa"
printf("Il file contiene la parola casa!\n");
else
printf("Il file non contiene la parola casa!\n");

return 0; //ESCI

}


dovrebbe essere cosi piu o meno.. la funzione Cerca() la ho arrangiata, e non l a ho testata quindi č molto probabile che sia sbagliata, ma piu o meno dovrebbe essere cosi (didatticamente parlando, altrimenti andrebbe ottimizzata di molto).

71104
12-12-2007, 16:12
C (non C++) apri il file con fopen, leggilo tutto in memoria con fread, chiudilo con fclose, cerca il testo direttamente nel buffer di memoria in cui hai caricato il contenuto del file.
per cercare nel testo basta che ti tieni un puntatore char* (assumendo che il contenuto del file sia condificato in ANSI, 8 bit per carattere) e lo incrementi di 1 utilizzando strncmp ad ogni iterazione (spero di essermi spiegato).