fscanf не может прочитать весь файл, когда файл слишком большой - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь использовать C для чтения большого текстового файла (скажем, романа с более чем десятью тысячами слов) с помощью fscanf, но каждый раз программа будет читать до определенной точки и, по-видимому, достигнет EOF, пока это не так. далеко от конца файла. Вот мой код:

void putWordsInArray(){

        FILE* fileToRead;
        char words[1024];
        int singleSize = 0;

        singleWordArray = (char**)malloc(1024*sizeof(char*));
        indexArray1 = (int*)malloc(1024*sizeof(int));
        //read the temp file automatically generated
        fileToRead = fopen("temp.txt", "r");
        while(fscanf(fileToRead, "%s", words) != EOF){

            printf("%s\n", words);
            //the following if-else statement add the word read to the single word array
            //if they are not yet in the array, or increment its count by 1 isf its already there
            int result = -1;
            result = contains(words, singleWordArray, singleSize);
            if(result == -1){
                indexArray1 = (int*)realloc(indexArray1, (singleSize + 1) * sizeof(int));
                singleWordArray = (char**)realloc(singleWordArray, (singleSize + 1) * sizeof(char*));
                singleWordArray[singleSize] = (char*)calloc((strlen(words) + 1), 1024*sizeof(char));
                strcpy(singleWordArray[singleSize], words);
                indexArray1[singleSize] = 1;
                singleSize++;

            }
            else{
                indexArray1[result] += 1;
            }
            //check if the current list contains the incoming word or not
        }
    }

Кто-нибудь знает, что здесь произошло? Я считаю, что я выделил достаточно памяти каждый раз. Спасибо всем, кто помогает.

...