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

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Buscar palabra dentro de un archivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Buscar palabra dentro de un archivo  (Leído 13,982 veces)
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Buscar palabra dentro de un archivo
« en: 7 Agosto 2010, 18:10 pm »

Hola que tal?¿

miren intento buscar una palabra dentro de un archivo leido previamente con ReadFile,una vez guardado ene l Buffer,con un bucle FOR leo byte a byte asta que encuentro la palabra primera de lo que quiero buscar pero despues nose como hacer para leer los demas bytes...:S osea tengo algo asin:
Código
  1. char Buffer[1000]; /*archivo leido*/
  2. char Palabra[5] = "Mundo";
  3.  
  4. for(int i = 0; i < SizeFile; i++)
  5. {
  6. if(Buffer[i] == Palabra[0]) /*Cuando encuentre la M*/
  7. /*I AKI NSE K HACER :s*/
  8.  
  9. }
  10. }
  11.  

imaghino que deberia ir guardando byte a byte en otro buffer o nse no se me ocurre nada :S:S



saludos



En línea

MIG80

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: Buscar palabra dentro de un archivo
« Respuesta #1 en: 7 Agosto 2010, 21:10 pm »

Citar
Código
  1. if(Buffer[i] == Palabra[0]) /*Cuando encuentre la M*/
  2. /*I AKI NSE K HACER :s*/
  3.  

Pues yo creo que si sabes ;)... comparas las letras que faltan

Saludos


« Última modificación: 7 Agosto 2010, 21:11 pm por czealt » En línea

Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Buscar palabra dentro de un archivo
« Respuesta #2 en: 7 Agosto 2010, 21:31 pm »

Hola gracias por responder,eso ya lo se que hay que comparar pero yo me refiero a comoseria la sintaxis,


con mas if?¿

es  que el objetivo de esto es que el usuario ponga una palbra de X letras i despues claro i despues comparar tantas lñetras tenga la palabra a buscar,para comparar strcmp() no me sirve no?¿

En línea

MIG80

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: Buscar palabra dentro de un archivo
« Respuesta #3 en: 7 Agosto 2010, 21:40 pm »

Estuviste cerca, cerca.. las siguientes comparaciones puedes hacerlas con algun bucle pero tambien podrias usar la funcion strncmp() :P

Saludos
En línea

Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Buscar palabra dentro de un archivo
« Respuesta #4 en: 7 Agosto 2010, 21:44 pm »

mm hacer otro bucle for con una variable de tipo int que contenga cuantas letras tenga la palabra i conese segundo bucle pues recorrer i comparar,no?¿


En línea

MIG80

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: Buscar palabra dentro de un archivo
« Respuesta #5 en: 7 Agosto 2010, 21:49 pm »

mm hacer otro bucle for con una variable de tipo int que contenga cuantas letras tenga la palabra i conese segundo bucle pues recorrer i comparar,no?¿

si claro, con eso yo creo que funciona intentalo asi.

Saludos.
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Buscar palabra dentro de un archivo
« Respuesta #6 en: 7 Agosto 2010, 22:01 pm »

Código:
http://www.cplusplus.com/reference/clibrary/cstring/strstr/
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Riki_89D


Desconectado Desconectado

Mensajes: 851


BCN CITY


Ver Perfil
Re: Buscar palabra dentro de un archivo
« Respuesta #7 en: 8 Agosto 2010, 17:31 pm »

bueno tengo esto:
Código
  1. int inc = 0;
  2. char Resultado[10];
  3. for(int i = 0; i < 255; i++)
  4. {
  5. if(Frase[i] == Palabra[inc])
  6. {
  7. for(int b = 0; b < sizeof(Palabra); b++)
  8. {
  9. Resultado[b] = Frase[i];
  10. }
  11. }
  12. }
  13.  

Pero nada en Resultado alfinal keda la misma letra todo el rato:S sera por k en el segundo bucle la I no se incrementa i por eso se repite la misma letra pero probe con esto:

Resultado = Frase[ì++];

pero nada :(
« Última modificación: 8 Agosto 2010, 17:36 pm por Riki_89D » En línea

bizco


Desconectado Desconectado

Mensajes: 698


Ver Perfil
Re: Buscar palabra dentro de un archivo
« Respuesta #8 en: 8 Agosto 2010, 19:54 pm »

si lo quieres buscar asi, un puntero apunta a la cadena a buscar (puntero1), otro apunta al caracter N del buffer (puntero2).

si el caracter al que apunta puntero1 es igual que el que apunta puntero2 incrementas ambos, si antes de llegar al tope uno no es igual al otro (la palabra es distinta) puntero1 tiene que apuntar ora vez a la palabra a buscar.


En línea

MIG80

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: Buscar palabra dentro de un archivo
« Respuesta #9 en: 8 Agosto 2010, 21:39 pm »

bueno tengo esto:
Código
  1. int inc = 0;
  2. char Resultado[10];
  3. for(int i = 0; i < 255; i++)
  4. {
  5. if(Frase[i] == Palabra[inc])
  6. {
  7. for(int b = 0; b < sizeof(Palabra); b++)
  8. {
  9. Resultado[b] = Frase[i];
  10. }
  11. }
  12. }
  13.  

Pero nada en Resultado alfinal keda la misma letra todo el rato:S sera por k en el segundo bucle la I no se incrementa i por eso se repite la misma letra pero probe con esto:

Resultado = Frase[ì++];

pero nada :(


mmm me parece que de veras no sabes que hacer...
creo que la siguiente función hace lo que buscas (y sino al menos te guiará un poco :P)

Código
  1. int buscarpalabra(const char *Palabra,const char *Frase)
  2. /* Busca el string 'Palabra' en el string 'Frase'. Retorna 1 si lo encuentra, 0 en caso contrario */
  3. {
  4.  const int lon_frase=strlen(Frase),lon_palabra=strlen(Palabra); // 'const int' porque su contenido no variara
  5.  int encontrado=0;
  6.  
  7.  for(int i=0;i<lon_frase && !encontrado;i++)
  8.  {
  9.    if(Frase[i]==Palabra[0])
  10.    {
  11.      encontrado=1;
  12.      for(int b=1;b<lon_palabra && encontrado;b++)
  13.      {
  14.        if(Frase[i+b]!=Palabra[b])
  15.          encontrado=0;
  16.      }
  17.    }
  18.  }
  19.  
  20.  return encontrado;
  21. }
  22.  

Saludos
« Última modificación: 8 Agosto 2010, 22:05 pm por czealt » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines