Проблемы с чтением с использованием getw () - PullRequest
0 голосов
/ 09 января 2019

поэтому я работаю над этой программой, которая читает из текстового файла, который заполнен не простыми и простыми числами, поэтому сначала он читает все числа из одного текстового файла, а затем выводит только простые числа в другой текстовый файл. .

Допустим, один текстовый файл имеет:

233
179
178
199
198
157

На втором должно быть напечатано или скопировано:

233
179
199
157

До сих пор я работал над следующим кодом:

#include <stdio.h>

int main()
{
    FILE *in_file;
    int numbers;

    in_file = fopen("file1.txt", "r");

    while ( fscanf(in_file, "%d", &numbers) == 1) {
            printf("%d\n", numbers);
        }
        fclose(in_file);
    }
    return 0;
}

Проблема с приведенным выше кодом заключается в том, что чтение выполняется неправильно, вывод на экран не такой, как в file1, и я не уверен, следует ли это делать с функцией getw () или где-то еще в код

1 Ответ

0 голосов
/ 09 января 2019

Функция int getw(FILE *) предназначена для чтения целого числа непосредственно из байтов файла, а не для чтения целого числа из текстового содержимого файла.

Если вы хотите прочитать целые числа из файла, один за другим, используйте fscanf вместо:

FILE *in_file = fopen("file1.txt", "r");
FILE *out_file = fopen("file2.txt", "w");
int num;
while (fscanf(in_file, "%d", &num) == 1) {
    if (is_prime(num)) {
        fprintf(out_file, "%d\n", num);
    }
}
fclose(in_file);
fclose(out_file);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...