我正在编写一个程序,可以读取一组名为 dog.txt 的数字文件; 并且还写入分隔奇数和偶数的两个文件。我能够编译我的程序,但是,预期的输出不一样,在一个名为 EVEN 的文件中应该是偶数,在文件 odd 中应该是奇数。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int i;
int even,odd;
int num;
if (argc != 4) {
printf("Usage: executable in_file output_file\n");
exit(0);
}
FILE *dog = fopen(argv[1], "r");
FILE *feven= fopen(argv[2], "w");
FILE *fodd= fopen (argv[3], "w");
while (fscanf(dog, "%d", &num) != EOF)
{
if (0==i%2){
i++;
printf("even= %d\n", num);
}
else if(i!=0){
i++;
printf("odd= %d\n", num);
}
}
fclose(feven);
fclose(fodd);
fclose(dog);
return 0;
}
输出:
even= 1
odd= 2
even= 34
odd= 44
even= 66
odd= 78
even= 94
odd= 21
even= 23
odd= 54
even= 44
odd= 65
even= 78
odd= 68
even= 92
最佳答案
您正在检查 i % 2
,而不是 num % 2
。我什至不确定 i
在这个例子中做了什么——也许你打算稍后使用它。
while (fscanf(dog, "%d", &num) != EOF) {
if (num % 2 == 0) {
printf("even = %d\n", num);
}
else if(num != 0) {
printf("odd = %d\n", num);
}
}
我想一旦你修复了这个错误,将这些数字写入文件的代码将在稍后出现。
关于c - 写入偶数和奇数的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2541506/