0

タスクはここにあります: 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");

        }

    }

}
4

1 に答える 1

5

k行で初期化されていません

x[k]=query[i];

そのため、おそらく に割り当てられたメモリの最後を超えて書き込もうとするでしょうx

最も簡単な修正は、k宣言時に初期化することです

int i,j,ok=1,k=0,t;
//            ^^
于 2013-11-04T21:48:05.697 に答える