Как сканировать в TXT-файл в символ в C? - PullRequest
0 голосов
/ 21 мая 2019

Я хочу иметь возможность сканировать текстовый файл в мою программу на C, чтобы я мог искать и хранить слова, содержащие заглавные буквы.Моя проблема - сканирование в файле.

Я пытался создать строку, используя fseek для определения длины текстового файла и используя char [] для создания массива.Затем я попытался использовать fgetc для сканирования каждого символа в массиве, но, похоже, это не сработало.Цикл for в конце проверяет работоспособность сканирования, распечатывая его.

#include <stdio.h>

int main() {

    FILE *inputFile;

    inputFile = fopen("testfile.txt", "r");

    //finds the end of the file
    fseek(inputFile, 0, SEEK_END);

    //stores the size of the file
    int size = ftell(inputFile);

    char documentStore [size];

    int i = 0;

    //stores the contents of the file on documentstore
    while(feof(inputFile))
    {
        documentStore[i] = fgetc(inputFile);
        i++;
    }

    //prints out char
    for (int j = 0; j < size; j++)
    {
        printf("%c", documentStore[j]);
    }

    return 0;
}

В настоящее время я получаю много случайных символов ascii, и я не уверен, почему.Я ожидаю, что цикл for распечатает весь текстовый файл.

1 Ответ

0 голосов
/ 21 мая 2019

Вам необходимо внести следующие изменения

  1. После int size = ftell (inputFile); add fseek (inputFile, 0, SEEK_SET); в соответствии с предложением xing

  2. Сделать documentStore указателем на символ и выделить память, используя malloc для значения size

  3. while (feof (inputFile)) необходимо изменить на while (! Feof (inputFile))

...