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

最佳答案

您是否添加了#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;
}

关于c - atoi()使程序崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16265288/

10-12 19:00