从char *转换为int

时间:2017-04-07 05:04:39

标签: c casting

我有一个字符串char * a =' 343'。我想将其转换为整数值。

实施例。 char * a =" 44221" 我想将该值存储到int a;

3 个答案:

答案 0 :(得分:4)

这是大多数C运行时的一部分:

#include <stdlib>

char *a = "1234";
int i = atoi(a);

这是atoi功能。请阅读各种可用方法。 C的库很精简,所以不会花很长时间。

答案 1 :(得分:3)

有几种方法可以将字符串(由char *指向)转换为int

我在这里列出了一些:
假设你有一个字符串str声明为:

char *str = "44221";
  1. int a = atoi(str);
    这将返回从int指向的字符串转换的str值。虽然方便,但当用户提供无效输入时,此功能不会执行准确的错误报告。

  2. 使用sscanf():这与通常的scanf类似,不同之处在于它从字符串而不是stdin读取输入。

    int a;
    int v = sscanf(str, "%d", &a);
    // XXX: v should be 1 since 1 conversion is performed; handle the conversion error if it isn't
    
  3. strtol :这会将给定字符串转换为长整数。文档位于:http://man7.org/linux/man-pages/man3/strtol.3.html

    一般用法:

    char *ptr; 
    long a = strtol(str, &ptr, base);
    
  4. 第一个无效字符(不是数字)的地址存储在ptr中。 Base默认为10。

    1. 迭代字符值:为什么要在编写自己的例程来实现此目的时依赖于库?这一点都不难。这样,您甚至可以执行所需的验证/错误检查。

      示例代码:

      unsigned char ch;   
      int a = 0;
      // Add checks to see if the 1st char of the string is a '+' or '-'.
      for (i = 0; i < strlen(str); i++) { 
          ch = str[i]; 
         //Add error checks to see if ch is a digit or not (e.g. using isdigit from <ctype.h>).
          a = a*10 + (ch - '0');
      }
      
    2. 希望这有帮助!

答案 2 :(得分:2)

这应该有帮助

#include <stdlib.h>

inline int to_int(const char *s)
{
    return atoi(s);
}

以防使用示例

int main( int ac, char *av[] )
{
    printf(" to_int(%s) = %d " ,av[1] , to_int(av[1]) );
    return 0;
}