使用getw()阅读问题

时间:2019-01-09 14:25:41

标签: c

所以我正在研究从一个装有非质数和质数的文本文件读取程序,因此它首先从一个文本文件中读取所有数字,然后仅将质数输出到另一个文本文件

假设一个文本文件具有:

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 :(得分:4)

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);