为什么我的C代码在分割线时崩溃

时间:2016-12-13 21:45:02

标签: c string split crash

我试图拆分字符串int cube = 29;    当一切都被拆分时,我在令牌中得到一个空值,当我尝试将令牌作为字符串分配给buf时程序崩溃。什么是布莱恩?我想得到29并打印出来

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


int main(void)
    {
        char buf[500];
        sprinf(buf, "int cube = %i", 29);
        const char del[] = " = ";
        char *token;
        token = strtok(buf, del);
        char temporary[500];
        sprintf(temporary, "%s", token);
        int number = atoi(temporary);
        puts(number);

        return 0;
    }

Picture of me debugging the code

1 个答案:

答案 0 :(得分:1)

第一次调用strtok(buf,del)将在del中的任何字符的第一次出现处替换nul字符后返回指向buf的第0个字符的指针。所以如果buf是&#34; int cube =%i&#34;和德尔是#34; =&#39;,它将替换&#34; int&#34;之间的空格。和&#34;立方体&#34;使用nul,并返回指向buf [0]的指针,结果为&#34; int&#34;。