Go Down

Topic: Cortar char y convertirlo a char* (Read 4 times) previous topic - next topic

Maverik

Feb 04, 2011, 04:23 pm Last Edit: Apr 30, 2012, 04:54 am by coleoptero Reason: 1
necesito cortar un string.
el problema es q me llega un char para eso necesito convertirlo a char*

el char q me llega es: alrm1=2030
pero antes de eso, necesito pasar de char a char*

necesito q quede
char* a: alarm1
char* b: 20
char* c: 30

alguien sabe como convertir de char a char*

javilolo

Prueba con la función strtok de C.

Maverik

ammm me das una idea de como es el código?
o donde buscar información

curro92

Habría muchas formas de parsear la cadena. Tendríamos que saber si la cadena que llega tiene siempre esa estructura: una serie de caracteres iniciales (por ejemplo, hasta 8), un carácter '=' y 4 dígitos
Si es así, podrías hacer algo así
Code: [Select]

char cadena[] = "alrm1=2030";
char *p, a[15], b[5], c[3];

// la primera parte
strcpy(a, cadena);
p = strchr(a, '=');
if(p != NULL) *p = '\0';  // se corta en el carácter '='

// segunda parte, se copia a partir de '=' y se corta dejando 2
p = strchr(cadena, '=');
if(p != NULL)
{
   strcpy(b, ++p);
   b[2] = '\0'; 
}

// tercera parte
p = strchr(cadena, '=');
if(p != NULL)
{
   p += 3;   // se corren 3 posiciones y se copia lo que queda
   strcpy(c, p);
}



Si las variables tienen que ser necesariamente punteros, puedes tener definidos dichos punteros, y luego apuntar al inicio de cada cadena
Code: [Select]

char *pa, *pb, *pc;

pa = &a[0];
pb = &b[0];
pc = &c[0];


Lo que no puedes es copiar una cadena en un puntero como char *a sin antes reservar espacio con malloc()


Maverik

curro92 el código funciona perfecto, el único problema es q
cuando tu pones cadena[] = "alarm1=2030"; en realidad yo lo asigno de una variable
llamada c que es un char y no se cuanto puede tener de largo, pero el largo no es problema ya
q puedo poner q si el largo es de 10 ente a esta función.


Code: [Select]

char c = client.read();
char cadena[] = c;
char *p, a[15], b[5], c[3];


yo tengo eso y me da el error: error: initializer fails to determine size of 'cadena'

Go Up