Я пытаюсь прочитать числа из файла с именем part_1.txt
, который содержит следующие данные:
101
102
103
104
105
106
107
108
109
Это код, с которым я работаю:
#include <stdio.h>
int main()
{
FILE *handle_in1 = fopen("part_1.txt", "r");
FILE *handle_in2 = fopen("part_2.txt", "r");
FILE *handle_out = fopen("parts.txt", "w");
int scan;
if(handle_in1 == NULL || handle_in2 == NULL)
{
printf("File(s) could not be handled.");
}
else
{
while(fscanf(handle_in1, "%d", &scan) != EOF)
{
fscanf(handle_in1, "%d", &scan);
printf("Number is %d\n", scan);
}
}
return 0;
}
Код должен выводить на экран все значения, хранящиеся в файле, до конца файла. Вместо этого он распечатывает все остальные значения (и последнее значение), например:
Number is 102
Number is 104
Number is 106
Number is 108
Number is 109
Что не так в этом коде?
Я отредактировал этот вопрос, так как не могу опубликовать ответ до 8 часов. Следующая версия - это новая версия:
#include <stdio.h>
int main()
{
FILE *handle_in1 = fopen("part_1.txt", "r");
FILE *handle_in2 = fopen("part_2.txt", "r");
FILE *handle_out = fopen("parts.txt", "w");
int scan;
if(handle_in1 == NULL || handle_in2 == NULL)
{
printf("File(s) could not be handled.");
}
else
{
fscanf(handle_in1, "%d", &scan);
while(fscanf(handle_in1, "%d", &scan) != EOF)
{
printf("Number is %d\n", scan);
}
}
return 0;
}
эта отредактированная версия программы дает мне значения: 102, 103, 104, 105, 106, 107, 108 и 109. Если я редактирую текстовый файл и помещаю один дополнительный 101 поверх текстового файла, то он дает значения полностью от 101 до 109, поэтому первое число должно пропустить. Почему это так, я понятия не имею ...