elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  buscar en un fichero c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: buscar en un fichero c++  (Leído 6,323 veces)
br7

Desconectado Desconectado

Mensajes: 18


Ver Perfil WWW
buscar en un fichero c++
« en: 21 Noviembre 2013, 00:55 am »

estoy haciendo un progrma q buscar palabras en fichero
pero necesito ayuda con este codigo
lo q necesito es q busqua q lo guarde en un fichero nuevo q creo con el nombre de la palabra q ingreso
ejemplo
primero te pide el nombre del fichero mifichero.txt  el deve estar en donde esta el programas
y despues podide q ingrese la palabra a buscar por ejemplo ingreso en
la buscar y muestra en donde esta y cuantas hay pero lo q buscar quiero q lo guarde en el fichero q creo  con la palabra en solo necesito como es para q yo puede guardar el resultado en ese fichero nuevo


char texto[100000000],arch[1000],letras[100];
int n,sum=0;
int contador = 0, encontrado = 0;
char cadena[256], buscar[100],nombre[25],buscrear[50];
char *a;
FILE *f,*crear;

main()
{
   printf("Ingrese el nombre del archivo del block de notas: ");

f = fopen(gets(arch),"r");
   if(f==NULL)
   {
   perror ("Error al abrir archivo");
   return -1;
   }
printf("\nEL CONTENIDO DEL FICHERO ES :\n\n");
while (fgets(texto,100000000,f) != NULL)
{
   cout<<texto;
}
    if (f != NULL)
    {
            printf("\nIngrese la palabra/frase que desea buscar en el archivo %s:\n\n\t\t\t\t", nombre);
            fflush(stdin);        //limpiar
            scanf("%[^\n]", buscar);
            //scanf("%[^\n]");

            strcpy(buscrear, buscar);  //copia la cadena

            strcat(buscrear,".txt");           //crear archivos
            crear=fopen(buscrear,"a+w");

            rewind(f);     //reguesar

            contador = 0;

            encontrado = 0;

            while (!feof(f))  //retorna diferente de 0
            {
                contador++;

                fgets(cadena,256,f);

                a = strtok(cadena,",.- ");

                while (a != NULL)
                {
                    if (!strcmp(buscar, a))      //comprar
                    {
                       encontrado++;
                     if(encontrado==1)
                     {
                     printf("%s Linea ",a);
                        } //if

                     printf("%d ", contador);

                    }//if
                    a = strtok (NULL, " ");
                }//while   2
            }//while 1
             if(encontrado>=1)
                   {
                   printf(",apareciones total :%d", encontrado);
                   }
                   //arch2.close();
            if (encontrado <= 0)
            {
            printf("\nLa palabra o frase no se encontro en el archivo %s.\n", nombre);
             }
     }
        fclose(crear);
        fclose(f);
getchar();  getchar();
  }

gracias


En línea

codigoenespanol.blogspot.com
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: buscar en un fichero c++
« Respuesta #1 en: 21 Noviembre 2013, 02:49 am »

* En buen plan lo primero que debes hacer es mejorar tu ortografía, si no entendemos el mensaje no es posible ayudar a resolver el problema.

* Cuando publiques código fuente por favor utiliza las etiquetas de código. Estas se agregan mediante el cuadro desplegable con el texto "GeSHi" en la pagina de composición de mensajes, solo tienes que seleccionar ahí el lenguaje (C, C++, etc.).

* No utilices la función gets como tampoco fflush(stdin). Mas información en la pagina |Lo que no hay que hacer en C/C++. Nivel basico|

----

En C++ puedes utilizar la clase string y la funcion getline para leer cada una de las lineas de texto que componen un archivo.

Un saludo


En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: buscar en un fichero c++
« Respuesta #2 en: 21 Noviembre 2013, 04:20 am »

Citar
y despues podide q ingrese la palabra a buscar por ejemplo ingreso en
la buscar y muestra en donde esta y cuantas hay pero lo q buscar quiero

Wow! Quiero pensar que su lengua nativa no es el español.
En línea

br7

Desconectado Desconectado

Mensajes: 18


Ver Perfil WWW
Re: buscar en un fichero c++
« Respuesta #3 en: 22 Noviembre 2013, 00:27 am »

comprendo
pero tengo otro problema
como vacio una varriable tipo char en  c++
tengo una variable tipo char dentro de un for que cada vez que corre le pide al usuario que ingrese una palabra y  cada vez que el for corre el usuario ingresa una palabra distinta, digamos el programa pide cuantas palabras quiere ingresar el usuario dice 4 el for va a corre 4 veces y cada vez que pide la palabra el usuario tiene que ingresar una palabra distinta que la anterior pero yo la quiero capturar en la misma variable

como hago eso?
que cada vez que corra capture una palabra diferente pero en la misma variable
dice que poniendo ==NULL pero no funcio y otro dice que coloque que es igual a ='\0'
pero no funciona nose como hacerlo

gracias de antemano

Código
  1.  
  2. char texto[100000000],arch[1000],letras[100];
  3. int d;
  4. char buscar[100],nombre[25],buscrear[50];
  5. FILE *f;
  6. ofstream entrada;
  7.  
  8. main()
  9. {
  10. cout<<"Ingrese el nombre del archivo del block de notas con extension .txt: \n";
  11.  
  12. f = fopen(gets(arch),"r");
  13. if(f==NULL)
  14. {
  15. perror("Error al abrir archivo");
  16. return -1;
  17. }
  18. cout<<"\nEL CONTENIDO DEL FICHERO ES :\n\n";
  19. while (fgets(texto,100000000,f) != NULL)
  20. {
  21. cout<<texto;
  22. }
  23.     if (f != NULL)
  24.     {
  25.     cout<<"\n\ncuantas palabras va a buscar\n\n ";
  26.     cin>>d;
  27.  
  28.         for(int c=1;c<=d;c++)
  29.            {
  30.             buscar[c] ='\0';  /*YO PIESNO QUE AQUI ESTA EL PROBLEMA
  31.               YO QUIERO QUE SE VACIE PARA VOLVER A
  32.                                  LLENARLA ABAJO CON OTRA FASE  PERO NO SE
  33.                                   COMO SE HACER  */
  34.            printf("\n\nIngrese la palabra/frase que desea buscar en el archivo %s:\n\n\t\t\t\t",nombre);
  35.            fflush(stdin);
  36.           scanf("%[^\n]",buscar);
  37.  
  38.            strcpy(buscrear, buscar);
  39.  
  40.            strcat(buscrear,".txt");
  41.  
  42.            entrada.open(buscrear,ios::out);
  43.  
  44.            if(entrada==NULL)
  45. {
  46.   perror("Error al abrir archivo");
  47.   return -1;
  48. }
  49.  
  50.  
  51.            if(entrada!=NULL)
  52. {
  53.   cout<<"\nArchivo creado con exito";
  54. }
  55.           }
  56.      }
  57.  
  58.  
  59.  
  60. fclose(f);
  61. getchar();  getchar();
  62. }




En línea

codigoenespanol.blogspot.com
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: buscar en un fichero c++
« Respuesta #4 en: 22 Noviembre 2013, 02:41 am »

En este preciso momento, recien llegue del trabajo,, se me ocurre strcpy( buscar[c], " " ) ; o con memset, mañana te doy una mejor ayuda..

Saludos!
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: buscar en un fichero c++
« Respuesta #5 en: 22 Noviembre 2013, 03:02 am »

El programa hay que rescribirlo desde cero ya que de C++ tiene bien poco, casi todo es C. Y como ya te comente no debes utilizar gets como tampoco fflush(stdin), por favor lee la pagina |Lo que no hay que hacer en C/C++. Nivel basico|

No necesitas "vaciar" una variable, solo tienes que utilizar un objeto de la clase string para leer ahí la palabra verificando que la lectura fue exitosa, nada mas. Por ejemplo:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. #include <string>
  7. using std::string;
  8.  
  9. int main()
  10. {
  11.   cout << "Cuantas palabras? ";
  12.   int num_pals;
  13.   cin >> num_pals;
  14.  
  15.   for (int i = 0; i != num_pals; ++i){
  16.      cout << "Teclea la palabra: ";
  17.      string palabra;
  18.      if (cin >> palabra)
  19.         cout << "La palabra " << (i + 1) << " es " << palabra << endl;
  20.      else
  21.         break;
  22.   }
  23.  
  24.   return 0;
  25. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: buscar en un fichero c++
« Respuesta #6 en: 22 Noviembre 2013, 05:14 am »

En realidad no me había detenido a leer el código, y mucho menos la consigna (costaba entender bastante)
Sigue los consejos de rir3760, esta mucho mas limpio ese código.

Saludos!
En línea

br7

Desconectado Desconectado

Mensajes: 18


Ver Perfil WWW
Re: buscar en un fichero c++
« Respuesta #7 en: 24 Noviembre 2013, 00:17 am »

Gracias me ayudo vastan lo que decia rir3760
En línea

codigoenespanol.blogspot.com
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: buscar en un fichero c++
« Respuesta #8 en: 25 Noviembre 2013, 18:27 pm »

@br7: las recomendaciones sobre libros, por desgracia todos ellos en ingles, se encuentran en el tema Presentación y dudas .

Otra opción es el libro Thinking in C++ de Bruce Eckel, desde su pagina principal puedes descargar su versión original en ingles o la versión (en desarrollo) en español.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
buscar texto de un fichero
Java
Sr.Morocco 1 16,318 Último mensaje 7 Febrero 2010, 15:24 pm
por Leyer
buscar y extraer un valor en un fichero en C++
Programación C/C++
huskerone 9 23,329 Último mensaje 1 Septiembre 2011, 05:24 am
por LearningSpanishProgrammer
IndexOf para buscar en un fichero[Solucionado]
Java
aldg 3 3,599 Último mensaje 21 Febrero 2012, 17:55 pm
por aldg
Buscar y modificar lineas de un fichero
Programación C/C++
lordluisiv 0 1,580 Último mensaje 17 Abril 2019, 22:11 pm
por lordluisiv
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines