c - 使用 strtol 或 strtok 解析 C 中的字符串?

标签 c strtok

字符串输入将是

> bc <address1> <address2> length

我可以使用 strtok 将字符串分解为标记,但不确定如何获取每个单独的标记,例如将地址 1 和地址 2 转换为十六进制。

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"); 
  }
}

到目前为止,它打印了 token ,但我不确定如何分别使用每个 token 。

bc
0x000FF
0x0FFF
30

最佳答案

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

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/

相关文章:

c - 尝试查找数组大小时出现 sizeof 错误

c - 随机数生成器 objective-c

c - 如何使用 scanf 函数从 ls -l 作为参数的结果中解析两个特定信息?

c++ - 为什么 strtok 不能与 stringstream 一起使用?

c - 为什么尽管 C 有严格的别名规则,但仍允许引用具有相似第一成员的结构?

c - while(i--) 通过 gcc 和 clang 优化 : why don't they use sub/jnc?

c++ - 在 strtok 之后比较字符串

c - 帮助!当输入 strtok 结果时,strcmp 在骗我

c - 如何使 strtok 在标记末尾包含换行符?

c - 使用 Strtok 存储字符串片段