Autor Tema: como capturar datos depues de una palabra  (Leído 2226 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
como capturar datos depues de una palabra
« 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.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:como capturar datos depues de una palabra
« Respuesta #1 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"

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:como capturar datos depues de una palabra
« Respuesta #2 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.

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
Re:como capturar datos depues de una palabra
« Respuesta #3 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 :/
« Última modificación: 28 de Abril de 2020, 22:05:31 por cvargcal »