字符串输入将是

> bc <address1> <address2> length

我可以使用strtok将字符串分解为标记,但不确定如何获取每个单独的标记,例如将address1和address 2转换为hex。
void tokenize()
{
char str[] ="bc 0xFFFF0 0xFFFFF 30";
char *tkn;
char *tkn2;

tkn = strtok (str," ");

  while (tkn != NULL) {

    while (*tkn != 0)
    {
        putchar(*tkn);
        *tkn++;
    }
  tkn = strtok (NULL, " ");
  printf("\n");
  }
}

到目前为止,它打印的令牌,但我不确定如何分别使用每一个。
bc
0x000FF
0x0FFF
30

最佳答案

使用strtol转换数字。第三个参数是基,0的特殊值将告诉strtol根据“x”之类的东西进行猜测。

long num;
char s[] = "0xFFFF0";
char s2[] = "30";

num = strtol(s, &endptr, 0);
// if s==endptr, there was an error.
// if you really want to be complete, endptr - s should equal strlen("0xFFFF0")

num = strtol(s2, &endptr, 0);
// Same error checks.

关于c - 使用strtol或strtok解析C语言中的字符串?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2395184/

10-12 01:33