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?