SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: Jevi en Domingo 14 de Diciembre de 2003, 23:33

Título: Ayuda Con Strings En C
Publicado por: Jevi en Domingo 14 de Diciembre de 2003, 23:33
Estoy intentando hacer un programa que me filtre unas determinadas líneas de un archivo.

Lo que hago es leer el archivo y comprobar si parace la cadena "GET" en la línea leída.

Código: Text
  1. fgets(w_cadena, w_long, file_access);
  2. strtok(w_cadena_file,"GET");
  3. printf("%d\n",strlen(w_cadena_file));
  4.  
  5.  

Esto me devuelve un número con la posición de la cadena "GET" en la cadena original W_cadena.

Ahora quisiera copiar la cadena origianl desde la posición de "GET" hasta el final, algo así como un substr.

¿Alguien puede decirme cómo hacerlo en C?

He estado buscando por Internet pero no he encontrado nada.  :(

Gracias. :hola:
Título: Re: Ayuda Con Strings En C
Publicado por: mabrev en Lunes 15 de Diciembre de 2003, 14:38
Hola:
 
  Seguramente haya alguna función en la librería string.h que sirva para hacer lo que quieres, pero si no es así, puedes recurrir al hecho de que las cadenas de caracteres en C pueden tratarse como arrays.

  Teniendo la posición desde donde quieres empezar a copiar, haces lo siguiente:
for (i=posicion; i<strlen(w_cadena); i++)
  nuevaCadena[i-posicion] = w_cadena;


  Espero que te sea de ayuda.

Saludos.
Título: Re: Ayuda Con Strings En C
Publicado por: Jevi en Lunes 15 de Diciembre de 2003, 16:30
mabrev, muchas gracias    :)

creo que sí que me servirá. Estoy haciendo unas pruebas a ratos perdidos en el trabajo  :D Ya os diré algo cuando termine.

Ta luegorrrrrr  :hola:
Título: Re: Ayuda Con Strings En C
Publicado por: JuanK en Martes 16 de Diciembre de 2003, 15:00
hechale una ojeada al reto de hdlc, alli encontraras apuntes que te serviran, si lo requieres y solo si de verdasd lo resuieres, te puedo pasar un fragmento de codigo de un programa que hice con allegro.
lo importante es que este fragmento  esd una rutina para buscar diferentes datos en un archivo de configuracion, de donde se lee la resolucion de la pantalla y el volumen: ejemplo:

res:32
vol:200

lo bueno de esto es que el programa esta en capacidad de buscar los datos en el archivo asi q
Título: Re: Ayuda Con Strings En C
Publicado por: JuanK en Martes 16 de Diciembre de 2003, 15:02
hechale una ojeada al reto de hdlc, alli encontraras apuntes que te serviran, si lo requieres y solo si de verdasd lo resuieres, te puedo pasar un fragmento de codigo de un programa que hice con allegro.
lo importante es que este fragmento  esd una rutina para buscar diferentes datos en un archivo de configuracion, de donde se lee la resolucion de la pantalla y el volumen: ejemplo:

res:32
vol:200

lo bueno de esto es que el programa esta en capacidad de buscar los datos en el archivo asi que si el archivo es asi:

fvrtbtyhnn
ervres:32drgfbfbntynvol:200edcwedc
vregvfre

es capaz de buscarlo.

La verdad no quisiera PASARTELO POR QUE AHI YA ESTA TODO HECHO.
pero si lo llegas ha necesitar , ya en caso de necesidad extrema....
Título: Re: Ayuda Con Strings En C
Publicado por: Jevi en Martes 16 de Diciembre de 2003, 18:24
Finalmente lo he resuelto así;

Código: Text
  1. #include &#60;stdio.h&#62;
  2. #include &#60;string.h&#62;
  3.  
  4. int main(){
  5. char texto_orig[]=&#34;Me parece haber GET visto un lindo gatito&#34;;
  6. char texto[]=&#34;Me parece haber GET visto un lindo gatito&#34;;
  7. char w_cadena_fin[1000];
  8. int longitud,i,w_long1;
  9. int j=0;
  10.  
  11. longitud = strlen(texto);
  12. strtok(texto,&#34;GET&#34;);
  13. w_long1 = strlen(texto);
  14. printf(&#34;&#092;n&#34;);
  15. printf(&#34;texto_orig es: %s&#092;n&#34;,texto_orig);
  16. printf(&#34;Longitud es: %d&#092;n&#34;,longitud);
  17. printf(&#34;GET esta en: %d&#092;n&#34;,w_long1);
  18.  
  19. for (i=w_long1; i&#60;longitud; i++){
  20. w_cadena_fin[j] = texto_orig[i];
  21. j++;
  22. }
  23.  
  24. printf(&#34;&#092;n&#34;);
  25. printf(&#34;La cadena fin es: %s&#092;n&#34;,w_cadena_fin);
  26.  
  27. getch();
  28. }
  29.  
  30.  

Ahora hay que pulirlo, jejeje.