Cortar char y convertirlo a char*

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*

Prueba con la función strtok de C.

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

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í

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

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()

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.

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’

Santo google...
http://www.elook.org/programming/c/strtok.html

si lo de cortar el char esta listo el problema es la convercion de las variables

Hola Maverik,
Una variable declarada como char c solo puede contener un único carácter. En tu caso supongo que se trata de una cadena, habría que definir como char c[xx] De todas formas, una cadena char siempre acaba en carácter nulo ('\0'). Puedes recorrer la cadena hasta llegar a ese carácter nulo

// suponiendo que la cadena está en char c[]
int n;

n = 0;
while(c[n] != '\0')
{
     // aquí haces lo que sea
    n++;
}

Curro92
mira te paso parte de mi codigo para que entiendas mas como es.

char c = client.read();
        if(readString.length() < 100) 
        {
          readString.append(c);
        }
        if(c == '\n') 
        {

          ////////**********alarma*********///////
          //          alrm1=20.50.ON
          //          acc1=ON

          int n;
          char t[10];
          n = 0;
          while(c[n] != '\0')
          {
            t= t + c[n];// aquí haces lo que sea
            n++;
          }

          char cadena[] = c;
          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);
          }

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

con este código me da el error:
error: invalid types ‘char[int]’ for array subscript
en esta parte:

while(c[n] != '\0')

ya no se como mas hacer esto me esta volviendo loco

Por lo que veo estás usando la clase String, y no es C sino C++
Tu cadena sería readString, creo. Pero en C++ no te puedo ayudar mucho.

Gracias igual por la ayuda, seguiré intentando y esperando la ayuda de alguien ...

:smiley: