簡體   English   中英

寫出偶數和奇數的程序

[英]program that writes the even and odd numbers

我正在編寫一個程序,可以讀取一組名為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

你正在檢查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);
    }
}

我想,一旦你修復了這個bug,將這些數字寫入文件的代碼將會出現。

該代碼不包含寫入輸出文件的指令。 它只寫入stdout。

printf函數寫入屏幕(更准確地說,它寫入“標准輸出”,但通常是屏幕)。 您想要寫入文件。 你打開了名為fevenfodd文件。 要寫入它們,您將使用fprintf調用,它的工作方式類似於printf除了它需要一個額外的(最左側)參數,即您要寫入的FILE* ,例如

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

此外,您的結果不正確,但這是一個無關的問題。

除了printf / fprintf問題之外,在任何體面的現代編譯器中,該代碼應該生成警告,表明您沒有為i分配任何初始值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM