昇順で格納されている整数を含む2つの.txt(data1.txt、data2.txt)ファイルを取得し、それらを昇順でoutput.txt(data3.txt)にマージするプログラムを作成しています。fgets関数を使用して.txtファイルから各intを読み取り、if関数を使用して2つのinput.txtファイルのそれぞれからfgetsを比較しています(これはまったく機能していません)。だから私の質問は、2つのfgets関数を比較して整数を昇順で並べ替える適切な方法は何ですか?
data1.txtに含まれるもの:5 15 25 35 45
data2.txtに含まれるもの:10 20 30 40 50
コードは次のとおりです。
#include <stdio.h>
#include <stdlib.h>
#define LINE_LENGTH 80
int main()
{
FILE *in1, *in2, *out;
char buffer1[LINE_LENGTH+1], buffer2[LINE_LENGTH+1];
int ch1, ch2;
in1 = fopen("data1.txt", "r");
in2 = fopen("data2.txt", "r");
out = fopen("data3.txt", "w");
if(in1 == NULL || in2 == NULL)
{
fprintf(stderr, "Cannot open input file - exiting!\n");
exit(1);
}
if(out == NULL)
{
fprintf(stderr, "Cannot open output file - exiting!\n");
exit(1);
}
while( ! feof(in1) ) #Checking for end of file
{
fscanf(in1, "%d", &ch1);
fscanf(in1, "%d", &ch2);
if (ch1 <= ch2) fputs(ch1, out);
else fputs(ch2, out);
}
while( ! feof(in2) ) #Checking for end of file
{
fscanf(in1, "%d", &ch1);
fscanf(in2, "%d", &ch2);
if (ch2 <= ch1) fputs(ch2, out);
else fputs(ch1, out);
}
fclose(in1);
fclose(in2);
fclose(out);
return 0;
}
私がそれをすべてカバーしたことを願っています、あなたがより多くの情報を必要とするならば私に知らせてください
ありがとう!
- - - - - - - 編集 - - - - - -
fscanfを使用してwhileループを実装しようとしていますが、gccは、fputs関数を含むすべての行に対して「'fputs'の引数1を渡すと、キャストなしで整数からポインターを作成します」というエラーをスローします。fscanfでfputsを使用するべきではありませんか、それともch1 / ch2を別の形式にする必要がありますか?