从我正在处理的项目中获取以下示例。我要做的是从强大的角色中取出这个角色,并将其存储在变量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]
我不确定为什么它似乎假设它是一个整数而不是一个字符。
答案 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