TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: cvargcal en 02 de Agosto de 2016, 13:47:04

Título: Función Split
Publicado por: cvargcal en 02 de Agosto de 2016, 13:47:04
¡¡Saludos!!
¿En CCS  esta la función "split" o alguna forma de implementarla?
Por ejemplo la trama: "0,-75.586067,6.181814,2016/08/01,19:36:33"
¿Cómo  separar cada dato de acuerdo a un carácter, en este caso  "," ?
data1=0
data2=-75.58606
data3=6.181814
data4=2016/08/01
data5=19:36:33

EDIT:
Acabo de ver esto en el manual de CCS:
Código: C
  1. char string[30], term[3], *ptr;
  2. strcpy(string,"one,two,three;");
  3. strcpy(term,",;");
  4. ptr = strtok(string, term);
  5.  
  6. while(ptr!=0) {
  7.    puts(ptr);
  8.    ptr = strtok(0, term);
  9.    }
  10.          // Prints:one\r\ntwo\r\nthree



EDIT2
Aquí les dejo el código, Si saben como hacerlo mejor... por favor modifiquen  y compartan.

Código: C
  1. void main()  {
  2. char string[50], term[3], *ptr;
  3. char data1[4];
  4. char data2[10];
  5. char data3[10];
  6. char data4[10];
  7. char data5[10];
  8.  
  9. strcpy(string,"103,-73.586067,7.181814,2016/08/01,19:36:33;");
  10. strcpy(term,",;");
  11. ptr = strtok(string, term);
  12.  
  13. while(ptr!=0) {
  14.       strcpy(data1,ptr);                        // 1ra Palabra
  15.       strcpy(data2, strtok(NULL , term));       // 2ra Palabra
  16.       strcpy(data3, strtok(NULL , term));       // 3ra Palabra
  17.       strcpy(data4, strtok(NULL , term));       // 4ra Palabra
  18.       strcpy(data5, strtok(NULL , term));       // 5ra Palabra
  19.       ptr = strtok(0, term);
  20.    }
  21.    
  22.    printf("%s\r\n", data1); // 103
  23.    printf("%s\r\n", data2); // -73.586067
  24.    printf("%s\r\n", data3); // 7.181814
  25.    printf("%s\r\n", data4); // 2016/08/01
  26.    printf("%s\r\n", data5); // 19:36:33
  27.    
  28. }