Fabian E.
17.04.2010, 17:04
Hallo,
ich habe diese C-Funktion:
#define MAX_PARAMS 6
int params[MAX_PARAMS];
int cmdsplit(char*cmd_string)
{
int cursor = 0;
int param_nr = 0;
// Parameterarray initialisieren
for (int i=0;i<MAX_PARAMS;i++)
params[i] = -1;
/* Prüfen ob der command-string gültig beginnt */
if ((cmd_string == NULL) || (cmd_string[cursor] != '#'))
return -1;
while (cmd_string[cursor] != '\0' && cmd_string[cursor] != '*') // prüfen ob das ende erreicht wurde
{
char *tmp;
cursor++;
tmp = (cmd_string + cursor); // tmp wird auf den anfang des für atoi auszulesenden werts "gesetzt"
params[param_nr] = atoi(tmp); // wert auslesen
if (param_nr >= MAX_PARAMS) // sind mehr parameter verfügbar als erwartet? Stimmt was mit dem Commando nicht...
return -1;
param_nr++;
// Überspingen der ausgelesen Zeichen und ermitteln des nächsten "interessanten" Teils im string.
while((cmd_string[cursor] != ':') && (cmd_string[cursor] != '*') && (cmd_string[cursor] != '\0'))
cursor++;
}
return param_nr;
}
Leider funktioniert das so mit Compact-C nicht. Es gibt einige Syntaxfehler. Z.B. mag der die Pointer überhaupt nicht. Auch die Funktion "atoi" kennt er nicht.
Kann mir jemand helfen, das zu übersetzen?
ich habe diese C-Funktion:
#define MAX_PARAMS 6
int params[MAX_PARAMS];
int cmdsplit(char*cmd_string)
{
int cursor = 0;
int param_nr = 0;
// Parameterarray initialisieren
for (int i=0;i<MAX_PARAMS;i++)
params[i] = -1;
/* Prüfen ob der command-string gültig beginnt */
if ((cmd_string == NULL) || (cmd_string[cursor] != '#'))
return -1;
while (cmd_string[cursor] != '\0' && cmd_string[cursor] != '*') // prüfen ob das ende erreicht wurde
{
char *tmp;
cursor++;
tmp = (cmd_string + cursor); // tmp wird auf den anfang des für atoi auszulesenden werts "gesetzt"
params[param_nr] = atoi(tmp); // wert auslesen
if (param_nr >= MAX_PARAMS) // sind mehr parameter verfügbar als erwartet? Stimmt was mit dem Commando nicht...
return -1;
param_nr++;
// Überspingen der ausgelesen Zeichen und ermitteln des nächsten "interessanten" Teils im string.
while((cmd_string[cursor] != ':') && (cmd_string[cursor] != '*') && (cmd_string[cursor] != '\0'))
cursor++;
}
return param_nr;
}
Leider funktioniert das so mit Compact-C nicht. Es gibt einige Syntaxfehler. Z.B. mag der die Pointer überhaupt nicht. Auch die Funktion "atoi" kennt er nicht.
Kann mir jemand helfen, das zu übersetzen?