写出偶数和奇数的程序

时间:2010-03-29 21:47:54

标签: c

我正在编写一个程序,可以读取一组名为dog.txt的数字文件; 并写入分隔奇数和偶数的两个文件。我能够编译我的程序但是,预期的输出不一样,应该是一个名为EVEN的文件中的偶数,文件奇数中的奇数。

#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

4 个答案:

答案 0 :(得分:4)

您正在检查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);
    }
}

我想,一旦你修复了这个错误,将这些数字写入文件的代码将会出现。

答案 1 :(得分:0)

代码不包含写入输出文件的指令。它只写入stdout。

答案 2 :(得分:0)

printf函数写入屏幕(更准确地说,它写入“标准输出”,但通常是屏幕)。您想要写入文件。您已打开名为fevenfodd的文件。要写入它们,您可以使用fprintf调用,它的作用类似于printf,除了它需要一个额外的(最左侧)参数,即您要写入的FILE* ,例如

FILE *fmyfile = fopen("myfile.txt", "w");
fprintf(fmyfile, "The magic number is %d!", 3);

此外,您的结果不正确,但这是一个无关的问题。

答案 3 :(得分:0)

除了printf / fprintf问题之外,在任何体面的现代编译器中,该代码应该生成警告,表明您没有为i分配任何初始值。< / p>