C 将字符转换为整数导致seg故障
以我正在从事的一个项目为例。我要做的是从一个强函数中获取这个字符,并将它存储在变量m中。在本例中,mORi是一个包含L(5)的字符串。我只对这个字符感兴趣(本例中为5)。我可以用m来捕捉那个字符,但当我试图将它转换成整数时,我的程序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
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需要一个指向字符串的指针作为输入参数useatoi(&mORi[2])
;传递一个字符串,该字符串是atoi()
所需的-查看警告char
被提升为int
,但是atoi()
需要一个指针,因此您正在将int
转换为一个不是您想要的指针。编译器确实尝试过帮助!所以我经常在指针/地址空间上挣扎。。。这像是编程的青春期吗?只是随着时间而来?有关于它们的基本教程吗?抱歉没有教程。但你必须意识到指针并没有什么特别的。它们不是保存整数或字符,而是保存内存地址。如果要查看某个内存地址处的值,可以使用*
获取指定内存地址处的值。除此之外,它就像编程中的一切:练习。