C 将字符转换为整数导致seg故障

C 将字符转换为整数导致seg故障,c,C,以我正在从事的一个项目为例。我要做的是从一个强函数中获取这个字符,并将它存储在变量m中。在本例中,mORi是一个包含L(5)的字符串。我只对这个字符感兴趣(本例中为5)。我可以用m来捕捉那个字符,但当我试图将它转换成整数时,我的程序seg出错了。我假设我在某个地方超越了某个界限。肯定少了一些非常简单的东西。任何帮助都将不胜感激 char m; m = mORi[2]; //trying to get third char from string int mber = atoi(m); // se

以我正在从事的一个项目为例。我要做的是从一个强函数中获取这个字符,并将它存储在变量m中。在本例中,mORi是一个包含L(5)的字符串。我只对这个字符感兴趣(本例中为5)。我可以用m来捕捉那个字符,但当我试图将它转换成整数时,我的程序seg出错了。我假设我在某个地方超越了某个界限。肯定少了一些非常简单的东西。任何帮助都将不胜感激

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]

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

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

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

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

char m;
m = mORi[2]; //trying to get third char from string
int mber = m - '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

以下是使用
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

atoi需要一个指向字符串的指针作为其输入参数使用
atoi(&mORi[2])
;传递一个字符串,该字符串是
atoi()
所需的-查看警告
char
被提升为
int
,但是
atoi()
需要一个指针,因此您正在将
int
转换为一个不是您想要的指针。编译器确实尝试过帮助!所以我经常在指针/地址空间上挣扎。。。这像是编程的青春期吗?只是随着时间而来?有关于它们的基本教程吗?抱歉没有教程。但你必须意识到指针并没有什么特别的。它们不是保存整数或字符,而是保存内存地址。如果要查看某个内存地址处的值,可以使用
*
获取指定内存地址处的值。除此之外,它就像编程中的一切:practice.atoi需要一个指向字符串的指针作为输入参数use
atoi(&mORi[2])
;传递一个字符串,该字符串是
atoi()
所需的-查看警告
char
被提升为
int
,但是
atoi()
需要一个指针,因此您正在将
int
转换为一个不是您想要的指针。编译器确实尝试过帮助!所以我经常在指针/地址空间上挣扎。。。这像是编程的青春期吗?只是随着时间而来?有关于它们的基本教程吗?抱歉没有教程。但你必须意识到指针并没有什么特别的。它们不是保存整数或字符,而是保存内存地址。如果要查看某个内存地址处的值,可以使用
*
获取指定内存地址处的值。除此之外,它就像编程中的一切:练习。