🧙Конкурс сказок!
C/C11
(OFF) Beta_Master (S) 3 дек 2017

Запись и чтение файла

привет всем:даров извините что дергаю ленту, но запутался в потоке ввода/вывода.

Задание такое: запись, чтение и поиск по содержимому бинарного файла.

Со считыванием разобрался.

А вот как записать структуру в бинарный файл? Что лучше использовать fwrite или fpruntf?

вот код структуры:

typedef struct Data
{
char name[SIZE];
char surname[SIZE];
char patronymic[SIZE];
double sum;
int day[3];
int NumCredit;
char Adress[SIZE];
int NumAdress;
} SData;

Комментарии (22)

скорее всего fwrite :дум я могу быть не прав я только новичек
я тоже:-д вот и спрашиваю более опытных=)
fwrite - записывает данные и структуры данных как есть, в сыром виде.
fprintf - (вроде) выводит текст так же, как и printf, только в файл.
А не легче ли ввести string вместо char
Для записи "целым куском" нужен именно массив.
std::string основан на динамическом выделении памяти. То есть, сама строка х. з. по какому адресу.
char *str = "ololo";
FILE *fp = NULL;

fp = fopen("file", "a+");
fwrite(str, strlen(str), sizeof(char), fp); // вот тут есть неточность
fclose(fp);
но по идеи так
Давно учишь плюсы? :гг
я в крестах полный 0, я на си пишу.)
Какой учебник можешь посоветовать хочу попробовать.
и кстати, вот правильное использование структуры.

typedef struct Data - бессмысленно

в данном случае ты создаешь тип-структуру, которую создаёшь на месте: } SData;, вот

так что вот так будет правильнее

#include <stdio.h>
#include <string.h>

#define SIZE 5

typedef struct
{
char name[SIZE];
char surname[SIZE];
char patronymic[SIZE];
double sum;
int day[3];
int NumCredit;
char Adress[SIZE];
int NumAdress;
} sdata;

int
main(void)
{
sdata tdata;

strcpy(tdata.name, "ssss");
printf("%s\n", tdata.name);

return 0;
}
Показать комментарий
Скрыть комментарий
Назад 1 из 3 Вперёд
Для добавления комментариев необходимо авторизоваться
C/C11
Флибустьеры
Грабь корабли! Побеждай монстров! Создавай уникаль...
Тема: Светлая | Тёмная
Версия: Mobile | Lite | Touch | Доступно в Google Play