gpt4 book ai didi

c - 为什么程序不写入文件?

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:32 24 4
gpt4 key购买 nike

当我查看这段代码时,我没有发现任何问题,但显然存在。

它的作用:

逐行读取两个文件,比较排序后的整数并将较小的整数放入输出文件,然后读取下一个较小的整数并将其放入文件。

它是两个仅包含数字的排序列表的合并排序。

每行一个数字,如下所示:

1

23

45

56

78

它可以正确打开三个文件,但似乎没有向输出文件写入任何内容。

这是为什么?

(我为我结构错误的代码道歉。)

#include <stdio.h>
#include <stdlib.h>

int main ( int argc, char **argv) {

FILE *source_file_one;
FILE *source_file_two;
FILE *destination_file;
int source_file_one_input = 0;
int source_file_two_input = 0;

source_file_one = fopen(argv[1], "rb");
source_file_two = fopen(argv[2], "rb");
destination_file = fopen(argv[3], "w");

if(argc != 4)
printf("Useage: mergeSort <source_file_1> <source_file_2> <destination_file>\n");

if(source_file_one == NULL)
printf("Unable to open file one: %s\n", argv[1]);
exit(1);

if(source_file_two == NULL)
printf("Unable to open file two: %s\n", argv[2]);
exit(1);

while(!feof(source_file_one)) {
while(!feof(source_file_two)) {
fscanf(source_file_one, "%d", &source_file_one_input);
fscanf(source_file_two, "%d", &source_file_two_input);

if(source_file_one_input > source_file_two_input) {
fprintf(destination_file, "%d", source_file_two_input);
}
else fprintf(destination_file, "%d", source_file_one_input);
}
}

fclose(source_file_one);
fclose(source_file_two);
fclose(destination_file);

}

最佳答案

您的程序存在严重的逻辑问题,但您没有得到任何输出的原因是缺少大括号。如果没有大括号,您的程序只会点击第一个 exit(1) 并退出。

if(argc != 4) {
printf("Useage: mergeSort <source_file_1> <source_file_2> <destination_file>\n");
exit(1);
}
if(source_file_one == NULL) {
printf("Unable to open file one: %s\n", argv[1]);
exit(1);
}
if(source_file_two == NULL) {
printf("Unable to open file two: %s\n", argv[2]);
exit(1);
}

作为解决逻辑问题的提示,您不需要嵌套循环!

关于c - 为什么程序不写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23190123/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com