如何使用 atoi() 将 char 数组的元素转换为 int? [复制]

Posted

技术标签:

【中文标题】如何使用 atoi() 将 char 数组的元素转换为 int? [复制]【英文标题】:How to use atoi() to convert an element of a char array to int? [duplicate] 【发布时间】:2015-08-14 16:44:58 【问题描述】:

代码如下:

char *P_char = malloc(sizeof(char)*10);

int i = 0;

for(i; i < 10; i++)

    P_char[i] = (char)(i + 48);

这里是我尝试使用 atoi 的一些代码

printf("The int result is: %d", atoi(P_char[4]));

int converted = atoi(P_char[4]);
printf("The int result is: %d", converted );

const char x = P_char[4];
int converted = atoi(x);
printf("The int result is: %d", converted );

但还是不行。我不知道 atoi() 是否不应该用于指针。有这样的事实吗?

注意:当我说不起作用时,我的意思是程序以错误代码退出,而不是执行到最后。

【问题讨论】:

您正在尝试将char 转换为整数,但您需要传递char* put &amp;P_char[4] 但可能无法按您的预期工作。看来您尝试将单个 char 转换为 int。 你读过 atoi 的手册页吗? atoi 将字符串转换为整数,而不是将字符转换为整数。 char 到整数只需要强制转换... 查看atoi() here上的文档。 您期望获得什么价值?如果你想得到从 48 到 58 的数字,你只需要用 %d 打印出来。 char 和 int 仅在大小上有所不同。 char 可以容纳 2^8 个不同的数字,int 可以容纳 2^32,但它们都用于容纳整数值。 【参考方案1】:

如果你有这样的说法

const char x = P_char[4];

然后将存储在 x 中的数字输出为整数,您可以通过以下方式

printf("The int result is: %d", x - '0' );

至于函数atoi则应用于字符串而不是单个字符。

【讨论】:

那么, atoi() 的参数应该是空终止的吗?总是? @ozgur 是的,你是对的。虽然它可以应用于也有字母字符的字符串。例如应用于“10abc”; atoi 将返回 10。 最后一个问题。我从控制台应用程序中获取 char 数组。我需要从中取出整数。所以我手里没有像“xyz213”这样的字符串。我有一个字符数组。在这种情况下可以使用 atoi() 吗? @ozgur 显示您拥有的字符串以及您将获得的整数。【参考方案2】:

函数atoi 用于将C 字符串转换为数字。它是这样声明的:

int atoi(const char *nptr);

您将 char 值作为参数。你必须改用这样的东西:

const char *s = "4711";
int i = atoi(s)

【讨论】:

以上是关于如何使用 atoi() 将 char 数组的元素转换为 int? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中使用 atoi 将 char 数组转换为 int 值

将 char 数组转换为 atoi 失败

c语言中如何将字符串转化成整数型并输出?

将 atoi() 返回的 int 插入数组

C++ string转int

c怎么将string转换成int