使用linux内核中的sprintf将字符串转换为int

时间:2016-10-17 08:36:23

标签: c arrays linux-kernel linux-device-driver

我正在尝试使用int将char数组转换为sprintf,但总是会出现分段错误(核心转储)。

#include<stdio.h>
int main()
{
  unsigned int n;
  sprintf("ff01","%u",n);
  printf("value of n = %u ",n);
}

我在这做错了什么? sprintf用于以格式化的字符串格式存储数据,但不能用于从字符串中检索int

我需要在linux内核中执行此操作。

3 个答案:

答案 0 :(得分:4)

要将字符串中的数字转换为整数,可以使用strtol()函数。

n = strtol("ff01", NULL, 16);

答案 1 :(得分:1)

sprintf()的第一个论点是:

  

str - 这是指向char元素数组的指针   结果C字符串存储

您传入的字符串文字无法修改,sprintf会尝试修改它 - &gt;段错误。

你可能意味着sscanf()。请注意,在这种情况下,您需要传递n &n的地址。

答案 2 :(得分:1)

您应该使用sscanf()来实现此目的。 这可能是您尝试做的事情:

#include<stdio.h>

int main(void)
{
    unsigned int n;
    sscanf("ff01", "%x", &n);
    printf("value of n = %u \n", n);
    return 0;
}