为什么我在这个C程序中遇到这个运行时错误?请告诉我什么是错的

0 c

任务可以在这里找到:http://www.talentbuddy.co/challenge/51846c184af0110af3822c32

我关于这项任务的计划如下:

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

void tokenize_query(char *query, char *punctuation) {

    int i,j,ok=1,k,t;
    char x[1000];

    for(i=0;i<strlen(query);i++)
    {
        ok=1;
        for(j=0;j<strlen(punctuation);j++)
        {
            if(query[i]==punctuation[j] || query[i]==' ')
                ok=0;   
        }

        if(ok!=0)
        {
            x[k]=query[i];
            k++;
        }

        else {

            for(t=0;t<k;t++)
            {
                printf("%c",x[t]);
            }

            k=0;
            printf("\n");

        }

    }

}
Run Code Online (Sandbox Code Playgroud)

sim*_*onc 5

k 是没有初始化的

x[k]=query[i];
Run Code Online (Sandbox Code Playgroud)

所以你可能会试着写出超出分配的内存的末尾x.

最简单的解决方法是k在声明它时初始化

int i,j,ok=1,k=0,t;
//            ^^
Run Code Online (Sandbox Code Playgroud)