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.
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