Код
uint32_t ParseCommandArguments(char *str, char *com, char arg[4][20])
{
uint32_t char_idx = 0;
uint32_t arg_idx = 0;
while(*str)
{
if(*str != 32) //not space
{
if(arg_idx==0) //command
{
com[char_idx++] = *str;
}
else //arguments
{
arg[arg_idx-1][char_idx++] = *str;
}
}
else // space
{
char_idx = 0;
arg_idx++;
}
str++;
}
return arg_idx;
}
{
uint32_t char_idx = 0;
uint32_t arg_idx = 0;
while(*str)
{
if(*str != 32) //not space
{
if(arg_idx==0) //command
{
com[char_idx++] = *str;
}
else //arguments
{
arg[arg_idx-1][char_idx++] = *str;
}
}
else // space
{
char_idx = 0;
arg_idx++;
}
str++;
}
return arg_idx;
}
и потом
Код
char *str = "run arg1 arg2";
char *command="";
char arguments[4][20];
uint32_t argc = ParseCommandArguments(str, command, arguments);
UART_SendString(UART0,command);
UART_SendString(UART0,arguments[0]);
UART_SendString(UART0,arguments[1]);
UART_SendInt(UART0,argc);
char *command="";
char arguments[4][20];
uint32_t argc = ParseCommandArguments(str, command, arguments);
UART_SendString(UART0,command);
UART_SendString(UART0,arguments[0]);
UART_SendString(UART0,arguments[1]);
UART_SendInt(UART0,argc);
когда иду в отладке шаг за шагом вроде все чары попадают куда нужно, но на выходе нулевые строки. что за чудеса?