2015-08-14 209 views
1

下面是代码:如何使用atoi()将char数组的元素转换为int?

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()是否不适用于指针。有这样的事实吗?

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

+2

你想转换'char'为整数,但你需要通过'字符*' –

+1

放'&P_char [4]如您所愿'但可能无法正常工作。它似乎你尝试将一个'char'转换为int。 – HuStmpHrrr

+1

你读过atoi的manpage吗? atoi将字符串转换为整数,而不是将char转换为整数。 char转换为整数只需要转换... –

回答

2

如果你有这样的语句

const char x = P_char[4]; 

然后输出存储在X中的数字,你可以通过以下方式

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

至于功能上atoi然后将其应用到字符串整数而不是一个字符。

+0

那么,atoi()的参数应该是null结束?总是? – ozgur

+0

@ozgur是的,你是对的。虽然它可以应用于也有字母字符的字符串。例如应用于“10abc”; atoi将返回10. –

+0

最后一个问题。我从控制台应用程序获取char数组。我需要从中得到整数。所以我手里没有像“xyz213”这样的字符串。我有一个char数组。在这种情况下是否可以使用atoi()? – ozgur

0

函数atoi用于将C字符串转换为数字。它被声明为:

int atoi(const char *nptr); 

你给一个char值作为参数。您必须使用这样的事情,而不是:

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