Запись и вывод бинарных файлов в языке Си

компьютеры Компьютеры программирование программы Образование

Проблема в том, что если я например записываю один элемент в бинарный файл, то потом при чтении этого файла на экран выводится два таких же элемента. С чем это может быть связано и как устранить это?
код программы:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>

#define ERROR_FILE_OPEN -3

void main() {
FILE *output = NULL;
int number,number1;

output = fopen("test.bin", "wb");
if (output == NULL) {
printf("Error opening file");
getch();
exit(ERROR_FILE_OPEN);
}

scanf("%d", &number);
fwrite(&number, sizeof(int), 1, output);

fclose(output);
output = fopen("test.bin", "r");
while(!feof(output)){fread(&number1, sizeof(int), 1, output);printf("%d ",number1);}
fclose(output);}
Ответы:
Смотри что в файле реально и какой размер(для 1 элемента логично 8 или 4 байта в зависимости от битности системы). Возможно неявное приведение про sizeof на 64битных системах например. По коду вроде всё так. Может ещё косяк где в выводе, но не видно ничего такого, кроме клиники когда ты свой ввод для scanf с выводом путаешь.
Все правильно читается, во второй раз еще не feof, но fread уже читает ноль элементов.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.