所以我正在研究从一个装有非质数和质数的文本文件读取程序,因此它首先从一个文本文件中读取所有数字,然后仅将质数输出到另一个文本文件
假设一个文本文件具有:
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()函数或代码?
答案 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);