我有一个字符串char * a =' 343'。我想将其转换为整数值。
实施例。 char * a =" 44221" 我想将该值存储到int a;
中答案 0 :(得分:4)
这是大多数C运行时的一部分:
#include <stdlib>
char *a = "1234";
int i = atoi(a);
这是atoi
功能。请阅读各种可用方法。 C的库很精简,所以不会花很长时间。
答案 1 :(得分:3)
有几种方法可以将字符串(由char *
指向)转换为int
:
我在这里列出了一些:
假设你有一个字符串str
声明为:
char *str = "44221";
int a = atoi(str);
这将返回从int
指向的字符串转换的str
值。虽然方便,但当用户提供无效输入时,此功能不会执行准确的错误报告。
使用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
strtol :这会将给定字符串转换为长整数。文档位于:http://man7.org/linux/man-pages/man3/strtol.3.html
一般用法:
char *ptr;
long a = strtol(str, &ptr, base);
第一个无效字符(不是数字)的地址存储在ptr
中。 Base默认为10。
迭代字符值:为什么要在编写自己的例程来实现此目的时依赖于库?这一点都不难。这样,您甚至可以执行所需的验证/错误检查。
示例代码:
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)
这应该有帮助
#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;
}