Forum: Mikrocontroller und Digitale Elektronik C - Parameter von einem String einsammeln


von Jan H. (janiiix3)


Lesenswert?

Nabend,

habe da mal ein Problem.
Ich bekomme einen String geschickt z.B " char stream[] = "-1:1,2;" ";

Jetzt rufe ich diese Funktion auf..
1
char         *cmdGetPara     ( cmd_t *cmd , char *input , uint8_t num )  
2
{
3
  char     *delimiter   = NULL;
4
  char     *cmdEndPtr  = NULL;
5
  const char   *rawPtr    = NULL;
6
7
  uint8_t x;
8
      
9
  for ( x = 0 ; x < cmd->tabLen ; x++ )
10
  {
11
    rawPtr = cmdSearch( input , ( char * ) cmd->table[x].instruction );
12
    if( rawPtr != NULL )
13
    {
14
      break;
15
    }  
16
  }
17
      
18
  printf( "DEBUG_ %s\r\n" , input );
19
    
20
      
21
  if( rawPtr == NULL )
22
  {
23
    return NULL;
24
  }
25
  
26
  cmd->raw->paraNumb = cmdCntPara( ( char * ) rawPtr );
27
    
28
  cmdEndPtr = strchr( rawPtr , ';' );  
29
  if( cmdEndPtr == NULL )
30
  {
31
    return  NULL;
32
  }
33
34
  delimiter = strchr( rawPtr , ':' ) + 1;
35
  if( ( delimiter - 1 ) == NULL )
36
  {
37
    return  NULL;
38
  }
39
40
  uint8_t paras = 0;
41
  delimiter = strtok( delimiter , "," );
42
  if ( delimiter == NULL )
43
  {
44
    return NULL;
45
  }
46
  
47
  for ( x = 0 ; x < num ; x++ )
48
  {
49
    delimiter = strtok( NULL , "," );
50
  }
51
  
52
  return delimiter; 
53
}
Diese soll mir je nach Angabe " uint8_t num " den entsprechend 
empfangenen Parameter zurück liefern.

Bei einem zweiten Aufruf, kann ich natürlich keinen zweiten Parameter 
mehr ermitteln da mir "strtok()" da etwas verhaut. Wie könnte ich das 
"besser" lösen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.