我正在尝试使用int
将char数组转换为sprintf
,但总是会出现分段错误(核心转储)。
#include<stdio.h>
int main()
{
unsigned int n;
sprintf("ff01","%u",n);
printf("value of n = %u ",n);
}
我在这做错了什么? sprintf
用于以格式化的字符串格式存储数据,但不能用于从字符串中检索int
?
我需要在linux内核中执行此操作。
答案 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;
}