我正在创建一个程序,它采用两个 .txt(data1.txt,data2.txt)文件,其中包含按升序存储的整数,并将它们按升序合并到 output.txt(data3.txt)中。我正在使用 fgets 函数从 .txt 文件中读取每个 int,并使用 if 函数(根本不起作用)比较两个 input.txt 文件中的 fgets。所以我的问题是比较两个 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 使指针从整数而不进行强制转换”。我不应该将 fputs 与 fscanf 一起使用,还是 ch1/ch2 应该是不同的格式?