TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: cvargcal en 28 de Abril de 2020, 18:35:48

Título: como capturar datos depues de una palabra
Publicado por: cvargcal en 28 de Abril de 2020, 18:35:48
Hola, neceisto ayuda de como hacer esto en C, tengo el arreglo    x|palabra|y  y necesito encontrar el dato y.

Alguna idea?
pienso que una forma es encontar la posicion de P y A, para saber que la palabra esta en el arreglo, y luego apartir de A+1 capturo el dato Y.
Título: Re:como capturar datos depues de una palabra
Publicado por: KILLERJC en 28 de Abril de 2020, 19:07:54
Si esta separado por |, entonces buscaria la forma de encontrar el |... Ahora si "y" no se encuentra en una posicion fija, entonces no te qeuda otra que buscar "palabra"
Título: Re:como capturar datos depues de una palabra
Publicado por: Eduardo2 en 28 de Abril de 2020, 19:58:15
En su forma mas basica:

Código: [Seleccionar]
char* busca2donumero(char *txt){
    while(isdigit(*txt)) txt++ ;
    while(isalpha(*txt)) txt++ ;
    return txt ;
}

Ahora , si "palabra" puede ser alfanumérica, debe pertenecer a un conjunto dado, "y" puede no existir,  el texto puede ser nulo, etc...   será mas elaborada.
Título: Re:como capturar datos depues de una palabra
Publicado por: cvargcal en 28 de Abril de 2020, 22:00:56
en realidad necesito esto

data
301c0017637661726763616c2f66656564732f636f6e74726f6c31333431

char
0cvargcal/feeds/control1341


 
Código: C
  1. uint16_t  len = readPacket(buffer,5000);   // return one full packet      301c0017637661726763616c2f66656564732f636f6e74726f6c31333431
  2.         if (len>0){
  3.  
  4.                   int8 topic_len=24;            //cvargcal/feeds/control1  
  5.                   int8 f=1+4+ topic_len ;    //29
  6.                  
  7.                        //  ___________         _________              
  8.                        // 30 1c 00 17 63       topic/data                                                              
  9.                        // C  1  2  3  4  
  10.                                                            
  11.                                  
  12.               while (1){          
  13.                      
  14.                     char dat2[40];
  15.                  if(strstr(buffer+3, "control1") != 0) {  
  16.                                                            
  17.                    fprintf(" found control1\r\n");
  18.                         int k=0;                  
  19.                         for (uint16_t i=0; i+f <len;i++){
  20.                                dat2[k] = buffer[i+f];                              
  21.                                k++;          
  22.                         }                                        
  23.                     fprintf("\r\n dat %s\r\n",dat2);    
  24.                          for (uint16_t h=0; dat2[h]!=0;h++) fprintf("%c",dat2[h]);        
  25.                      break;                                                                                                  
  26.                                                  
  27.                  }          
  28.             }

porder  capturar el valor del topico que seria 341
C control byte + 4 byte len + payload (topic+data)


pero no me emprime nada :/