这个C代码不断给我一个代码块中的分段错误

时间:2016-12-22 21:36:00

标签: c string split segmentation-fault runtime-error

这是我一直试图解决的问题,但失败了。为什么你认为是这样?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

        int main(void)
    {
        char str[500];
        sprintf(str, "int cube = %i;", 29);
        char *ptr;
        strtok_r (str, "=", &ptr);
        printf ("'%s'  '%s'\n\n", str, ptr);
        char temp[500];
        sprintf(temp, "%s", ptr);
        int conditional = atoi(temp);
        puts(conditional);
        return 0;
        }

1 个答案:

答案 0 :(得分:3)

问题在于:

puts(conditional);

puts函数期望char *指向字符串。您正在传递int。这是未定义的行为。

int的值被解释为一个指针,它可能没有指向有效的内存位置,导致崩溃。

如果您要打印int,请使用printf代替%d格式说明符。

printf("%d\n", conditional);