[英]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
函數寫入屏幕(更准確地說,它寫入“標准輸出”,但通常是屏幕)。 您想要寫入文件。 你打開了名為feven
和fodd
文件。 要寫入它們,您將使用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.