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