Pregunta: | 60805 - [C++] SABER SI EXISTE UNA PALABRA EN UN ARCHIVO (TXT) |
Autor: | Jose Luis |
Necesito saber si existe una palabra en un archivo de texto plano, como un txt.
Nose exactamente como hacerlo, tengo un lio con fopen, get, una strcmp... El code seria para C++. Saludos y gracias de antemano =) |
Respuesta: | NOIS dev |
Buenas, lo que tu pides es más sencillo de lo que parece, aunque es un poco lioso al principio, yo también tuve mis problemillas con la gestión de archivos en su día. Lo que puedes hacer es leer palabra por palabra el archivo e ir comparando si lo leído es igual a la palabra que buscas. Sería algo así: ____________________________________________________________________ #include <cstdio> /* Para los printf(); */ #include <cstring> /* Para las cadenas */ #include <iostream> /* Para la manipulación de archivos */ using namespace std; FILE *archivo; char file[] = "archivo.txt"; string s = ""; bool done = false; void read() { archivo = fopen(file,"r"); // Abres el archivo en modo lectura do { fscanf(archivo,"%s",s.c_str()); // Lees palabra por palabra if(!strcmp(s.c_str(),"palabra")) // Compruebas si son iguales { printf("\nEnctontrado!!"); done = true; // Activas la finalización de la busqueda } else { printf("No\n\n"); /* Ejemplo para que tu veas cuando no la encuentra y veas que lee realmente palabra por palabra. */ s = ""; // Vacías la cadena de comparación } }while(!feof(archivo) && !done); // Mientras NO llegue al final del archivo y mientras "done" sea FALSE fclose(archivo); /* Cierras el archivo ... MUY IMPORTANTE!! sino podría darte error o causarte problemas si lo intentas abrir de nuevo más tarde, tanto manualmente como con el programa. */ printf("\nTerminado"); } int main(void) { read(); cin.get(); } ____________________________________________________________________ Saludos! |