-2

我对 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() 调用会让我的程序崩溃吗?

4

1 回答 1

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;
}
于 2013-04-28T17:12:26.397 回答