如何使用 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 &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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章