Форум программистов, компьютерный форум, киберфорум
Наши страницы

C для начинающих

Войти
Регистрация
Восстановить пароль
 
bgm123
40 / 40 / 16
Регистрация: 29.01.2013
Сообщений: 277
#1

Считать данные в структуру с помощью одного вызова fread - C (СИ)

15.04.2013, 12:20. Просмотров 652. Ответов 1
Метки нет (Все метки)

Программа должна записывать в файл данные. А потом считать эти данные в структуру с помощью одного вызова fread. Вот какие возникли вопросы:
1)Размер структуры почему-то вместо 33 равен 36
2)считываются некоректные данные. Почему ? Как это поправить?


C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <stdio.h>
#include <stdlib.h>
 
#define ERR_OPEN_FILE 1
 
typedef struct _Base{
    int i;
    char c;
    int a[2];
    char name[20];
} Base;
 
 
int main(void)
{
    FILE *fp;
    int buf[2] = {53, 47};
    int a = 2; char ch = 'g'; double fl = 34.123; char name[20] = "qweuif";
    Base ob;
 
    fp = fopen("in.txt", "wb+");
    if(!fp) exit(ERR_OPEN_FILE);
 
    fwrite(&a, sizeof(int), 1, fp); 
    fwrite(&ch, sizeof(char), 1, fp);
    fwrite(buf, sizeof(int), 2, fp);
    
    fwrite(name, sizeof(char), 20, fp); 
 
    fclose(fp);
 
    fp = fopen("in.txt", "rb");
    if(!fp) exit(ERR_OPEN_FILE);
 
    fread(&ob, sizeof(Base), 1, fp);
 
    printf("%i\n", ob.i);
    printf("%c\n", ob.c);
    printf("%i, %i\n", ob.a[0], ob.a[1]);
    
    puts(ob.name);
 
    fclose(fp);
 
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2013, 12:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считать данные в структуру с помощью одного вызова fread (C (СИ)):

Считать данные из файла в структуру - исправить недочет в коде - C (СИ)
Необходимо из файла записать в структуру, а потом вывести. Подскажите что не так делаю #include &quot;stdafx.h&quot; struct lnm { char...

Как считать из файла сразу 1 массив и вывести его через fread? - C (СИ)
Помогите пожалуйста, как с помощью fwite записать в файл массив 1 разом? Добавлено через 37 минут я этим уже разобрался, но встала...

Считать структуру с файла - C (СИ)
КАа считать структуру с файла?Текстовый или бинарный без разницы Структура такая struct AeroFlot { char* destination;...

Считать структуру из файла в массив - C (СИ)
Здравствуйте, есть такая проблема никак не получается записать в массив созданный файл, делаю это для того чтобы потом там отсортировать,...

Как считать в структуру возвращаемую переменную? - C (СИ)
Добрый вечер, дамы и господа! Никак не могу понять. Есть структура. typedef struct Data{ char name; int year; }Data; Есть...

Считать из файла структуру - Название книги, автор, категория - C (СИ)
Доброго времени суток! Мое задание заключается в написании программы, которая считывает из файла структуру (Название книги, автор,...

1
anmartex
...
1708 / 1201 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
15.04.2013, 14:22 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от bgm123 Посмотреть сообщение
Размер структуры почему-то вместо 33 равен 36
Правильно, это называется выравниванием. Советую почитать: расставим точки над структурами C/C++

Цитата Сообщение от bgm123 Посмотреть сообщение
считываются некоректные данные. Почему ? Как это поправить?
Причина указана выше. Исправление лежит в отключении выравнивания для вашей структуры.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.04.2013, 14:22
Привет! Вот еще темы с ответами:

Считать из файла структуру, отсортировать и записать в новый файл - C (СИ)
Здравствуйте, буду очень благодарен если кто поможет. застрял на функции лоад. Вот само задание: создать программу по индивидуальному...

Считать в структуру каждую строку файла, содержащую информацию о слонах - C (СИ)
Каждая строка файла содержит информацию о слонах: кличка, рост, пол, вес. Считать в структуру. В общем я не могу считать в структуру,...

Как используя функции ввода-вывода нижнего уровня, считать структуру из файла? - C (СИ)
Как используя функции ввода-вывода нижнего уровня, считать структуру из файла? Структура состоит из 3 полей. Но размер каждого поля не...

Считать массив из одного файла, а из другого - его размерность - C (СИ)
нужно считать из файла in1.txt размерность массива, а из файла in2.txt сами элементы массива вот моя попытка { FILE...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.