'./run'中的错误:大小与prev_size损坏:0x000056533910b020

时间:2019-02-08 02:44:23

标签: c memory file-io dynamic-memory-allocation c-strings

从文件中读取字符串并读取句子,以查找句子和单词的数量。运行时,此错误是在每次准确读取24个字符后产生的。我相信我的realloc语句有问题,但是,我不知道如何解决此问题。这是函数:

void getSentence(FILE *fp, int *sentences, char *sentence)
{
    char currentLet;
    int length = 0;

    while ((currentLet = (char)fgetc(fp)) != '.' && currentLet != ':' && currentLet != ';' && currentLet != '?' && currentLet != '!')
    {
        printf("Current Sentence:%d %s\n", length, sentence);
        realloc(sentence, sizeof(char)*(length + 2));
        sentence[length] = currentLet;
        sentence[length+1] = '\0';
        length++;

    }

    return;
}

它将一直阅读,直到到达句子的结尾为止,这在我的while循环条件中标点符号处显示。

我正在使用以下标志进行编译: gcc fleschIndex.c -Wall -std = c99 -o run

编辑:谢谢,我将行更改为:

sentence = realloc(sentence, sizeof(char)*(length + 2));

现在我不再遇到此错误,但是它仍然停止以39个字符为单位进行读取。

0 个答案:

没有答案