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

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  substring en array char
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: substring en array char  (Leído 7,088 veces)
xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: substring en array char
« Respuesta #10 en: 21 Septiembre 2012, 18:57 pm »

vaya pensaba que haciendo eso alterabas la cadena original haciendo que el puntero ya no apuntase al principio de la cadena despues de la funcion, pero lo he ejecutado y funciona correctamente. supongo que cuando le pasas un puntero a una funcion, este es una copia y no el original.

pensaba que esto ya lo tenia claro pero siempre se aprende algo nuevo xD

un saludo!


En línea

soyloqbuskas

Desconectado Desconectado

Mensajes: 218


¡El conocimiento es de todos!


Ver Perfil
Re: substring en array char
« Respuesta #11 en: 21 Septiembre 2012, 19:15 pm »

¡Buenas a todos!

Xiruko, andamos cerca pero no damos en el clavo! jaja a ver si nos sale :-)

Citar
no imprimira todo, imprimira desde el primer "bien" hasta el final de la cadena

Efectivamente, pero yo no quiero que me imprima hasta el final de la cadena quiero que imprima desde que encuentra la cadena hasta el primer \n.

Ejemplo:

Citar
unsigned char* cadena="hola\nque tal\nbien\n"
Resultado:
que tal
/******************************************/
unsigned char* cadena="hola\nque tal\nbien\n¿que haces hoy?"
Resultado:
que tal
que haces hoy?

Para conseguir estos resultados 1º hacer un bucle que me trocee la cadena usando como delimitador el \n y me lo guarde en una variable y luego a esa variable hacer el strstr().

Gracias a todos por las respuestas, un saludo.


En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
soyloqbuskas

Desconectado Desconectado

Mensajes: 218


¡El conocimiento es de todos!


Ver Perfil
Re: substring en array char
« Respuesta #12 en: 21 Septiembre 2012, 19:51 pm »

¡AL FIN! jajaja

Ya tengo el codigo, no me puedo creer que me haya atascado tanto en un funcion tan simple jaja

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(){
  5.  
  6.        unsigned char * cadena="aaaa\nbbbb\nccccc1\ndddddd\nccccc2\nffff\nccccc3";
  7.  
  8.        char* buscar="ccc";
  9.  
  10.        char aux[50]="";  //array donde llenaremos con la cadena troceada
  11.        char* result="";
  12.        int i=0;
  13.        int j=0;
  14.        int longitud=strlen((char*)cadena);
  15.  
  16.        for(i=0;i<longitud;i++){
  17.                if(cadena[i]!='\n'){  // si no hay \n  sigue llenando aux.
  18.                        aux[j]=cadena[i];
  19.                        j++;
  20.                }
  21.                else{   // hay un \n, busca en el interior de aux
  22.                        aux[j]='\0';
  23.                        result=strstr((char*)aux,buscar);
  24.                        if(result){
  25.                               printf("Encontrado: %s\n",result);  //si encuentras imprime
  26.                               // return 0;  Si quieres que solo imprima el primero descomenta la linea.
  27.                        }
  28.                        j=0;
  29.                }
  30.        }
  31.  
  32.        //ahora hay que imprimir el ultimo porque el bucle solo imprime hasta que encuentra un \n
  33.        result=strstr((char*)aux,buscar);
  34.        if(result) printf("Encontrado: %s\n",result);
  35.  
  36.        return 0;
  37. }
  38.  

Muchas gracias a todos por vuestra ayuda, un saludo.
« Última modificación: 21 Septiembre 2012, 19:58 pm por soyloqbuskas » En línea

"Si tienes 1 manzana y yo tengo otra manzana...
y las intercambiamos, ambos seguiremos teniendo 1 manzana.
Pero...si tu tienes 1 idea y yo tengo otra idea...
y las intercambiamos, ambos tendremos 2 ideas."


George Bernard Shaw
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: substring en array char
« Respuesta #13 en: 22 Septiembre 2012, 00:33 am »

No es necesario copiar la cadena en un array auxiliar. En su lugar puedes utilizar "strstr" para buscar la subcadena, si se encuentra utilizas "strchr" para buscar el carácter '\n' después de esta.

Tu programa con esas modificaciones:
Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. int main(void)
  5. {
  6.   char *cadena = "aaaa\nbbbb\nccccc1\ndddddd\nccccc2\nffff\nccccc3";
  7.   char *buscar = "ccc";
  8.   size_t nc_buscar = strlen(buscar);
  9.   char *p;
  10.   char *q;
  11.  
  12.   p = cadena;
  13.   while ((p = strstr(p, buscar)) != NULL){
  14.      if ((q = strchr(p + nc_buscar, '\n')) != NULL){
  15.         printf("%.*s\n", q - p, p);
  16.         p = q + 1;
  17.      }else {
  18.         printf("%s\n", p);
  19.         break;
  20.      }
  21.   }
  22.  
  23.   return 0;
  24. }

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 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error al definir array char en DEV-CPP
Programación C/C++
DA KILLER 6 3,888 Último mensaje 27 Febrero 2012, 13:39 pm
por satu
Funcion que retorne char array? « 1 2 »
Programación C/C++
juancaa 13 17,478 Último mensaje 19 Julio 2012, 16:23 pm
por rir3760
No puedo asignar un char a un array de dos dimensiones
Programación C/C++
SCUMM 5 3,002 Último mensaje 12 Febrero 2014, 16:24 pm
por eferion
Duda con Array c++ 2 Dimensiones y vector de profundiad char nombre[X][Y]
Programación C/C++
jenniferpd 2 2,653 Último mensaje 28 Septiembre 2014, 04:07 am
por rir3760
ayuda array char
Programación C/C++
LAULAU12 7 3,763 Último mensaje 25 Enero 2015, 00:13 am
por LAULAU12
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines