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

时间:2013-11-04 21:45:55

标签: 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");

        }

    }

}

1 个答案:

答案 0 :(得分:5)

k未在行

中初始化
x[k]=query[i];

因此您可能会尝试在为x分配的内存末尾之外编写。

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

int i,j,ok=1,k=0,t;
//            ^^