atoi()使程序崩溃

时间:2013-04-28 16:54:52

标签: c crash atoi

我对atoi()有一个奇怪的问题: 我有一个字符串(比方说str),就像“aaaa 1111 \ 0”(我打印并检查过 - 确实如此)。 我尝试在str + 5上执行atoi,程序刚刚崩溃。我之前和之后添加了一行日志,我之前可以看到一行,但之后没有任何内容。所以问题出在这一行。 我还打印了str + 5,结果是预期的,所以字符串也没有错。

然后我尝试创建一个大小为5的char []数组,复制了4个数字并在末尾添加了null。 它仍然崩溃......

添加代码:

int int_pin;
char buff[MAX_LEN + PIN_LEN + 1];  //MAX_LEN = 5, PIN_LEN = 4
//reading size of MAX_LEN + PIN_LEN from file to buff...
buff[MAX_LEN + PIN_LEN] = '\0';
int_pin = atoi(buff+MAX_LEN);    //crashes

编辑:我也尝试过最简单的代码:     char a[] = "1234";     int_pin = atoi(a);

它仍然崩溃。 你知道为什么一个简单的atoi()调用让我的程序崩溃吗?

1 个答案:

答案 0 :(得分:1)

您是否添加#include <stdlib.h>以包含atoi功能?

我试过这个并且有效:

#include <stdio.h>
#include <stdlib.h>
int main(void) {
    char string[] = "aaaa 1111";
    int int_pin = atoi(string+5);
    printf("%d", int_pin); /* returns 1111 as intended */
    return 0;
}