如何在内核模块中使用atoi

时间:2019-02-11 09:10:43

标签: c linux-kernel kernel-module

无法#include <stdlib.h>,现在我需要在内核模块中编写自己的int my_atoi(char* str)函数。但是我认为必须有更简单的方法来使用此功能,以及stdlib中的其他方法(atof,itua等)。你知道吗?

1 个答案:

答案 0 :(得分:2)

您可以通过以下方式从char*转换为int,而无需atoi

#include "ctype.h"

int charToInt(const char *s)
{
  int n;
  unsigned char sign = 0;

  while (isspace(*s))
  {
    s++;
  }

  if (*s == '-')
  {
    sign = 1;
    s++;
  }
  else if (*s == '+')
  {
    s++;
  }

  n=0;

  while (isdigit(*s))
  {
    n = n * 10 + *s++ - '0';
  }

  return sign ? -n : n;
}


int main (){

    const char * g = "123456";

    printf("num:%d",charToInt(g));
    return 0;
}

产生输出,

  

123456