将char转换为整数导致seg错误

时间:2014-02-16 21:12:29

标签: c

从我正在处理的项目中获取以下示例。我要做的是从强大的角色中取出这个角色,并将其存储在变量m中。在这种情况下,mORi是一个包含L(5)的字符串。我只对这个字符(本例中为5)感兴趣。我能够使用m捕获该字符,但是当我尝试将其转换为整数时,我的程序会出错。我假设我在某个地方超过某个边界。必须有一些超级简单的缺失。任何帮助,将不胜感激。

char m;
m = mORi[2]; //trying to get third char from string
int mber = atoi(m); // seg faults here

编译时收到以下警告:

warning: passing argument 1 of ‘atoi’ makes pointer from integer without a cast [enabled by default]

我不确定为什么它似乎假设它是一个整数而不是一个字符。

2 个答案:

答案 0 :(得分:4)

atoi转换一个字符串(指向NULL终止字符数组的指针),而不是char。如果您想将char转换为int,只需减去'0'

char m;
m = mORi[2]; //trying to get third char from string
int mber = m - '0';

答案 1 :(得分:0)

以下是使用atoi的替代方法:

char m[2];
m[0] = mORi[2]; //trying to get third char from string
m[1] = 0; // NULL-terminating
int mber = atoi(m); // OK