Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2015, 07:36   #1
makar3000
Пользователь
 
Регистрация: 26.09.2010
Сообщений: 96
По умолчанию

Доброй ночи, подскажите пожалуйста. Я записываю структуру в обычный файл, считываю тоже. Все ок...

Вот только проблемка, у меня есть переменная int countDB в ней хранится кол-во записей в структуре. Соотрветственно после закрытия консольного приложения и повторного его открытия, структура подгружается, а вот как подгрузить countDB я не знаю....

размер структуры указан изначально, поэтому sizeof(base)/sizeof(base[0]) не покатит

Была идея записывать в тот же файл что и структуру, только в самом начале дописывать countDB и вертикальный слеш. А потом загонять обратно в переменную. Но у меня не хватило мозгов для реализации через fscanf

Язык СИ

Если сможете подкинуть идеи как сохранить кол-во записей после закрытия приложения, буду очень благодарен. Желательно показать кодом, если не сложно

Или может кто знает, как не указывать структуре кол-во записей изначально при ее формировании?

struct name {

} db[N];

Последний раз редактировалось Аватар; 16.11.2015 в 07:44.
makar3000 вне форума Ответить с цитированием
Старый 16.11.2015, 07:46   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от makar3000 Посмотреть сообщение
Или может кто знает, как не указывать структуре кол-во записей изначально при ее формировании?

struct name {

} db[N];
Слишком всё расплывчато, для конкретного ответа. Какие поля у структуры? Как вычисляется db[N] (зачем он вообще нужен)?
В какой тип файла Вы это пытаетесь сохранить (бинарный, текстовый...)?
Для каждого типа переменной, свой принцип формирования записи.
Пока не будет ответов на эти вопросы, вряд ли кто скажет, что-либо вразумительное.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 16.11.2015, 09:41   #3
makar3000
Пользователь
 
Регистрация: 26.09.2010
Сообщений: 96
По умолчанию

Код:
typedef struct database {
	int id;
	int productID;
	char name[MAX_NAME];
} database;

struct database base[MAX_DB];
//struct database backup[MAX_DB];

const char* db = "database.txt";
int countDB = 0;

void addDB()
{
       base[countDB].id = countDB;
	base[countDB].productID = productID;
	strcpy(base[countDB].name, name);
	countDB++;
}

void saveDB()
{
	FILE *fileDB;
	fileDB = fopen(db, "w");
	//fputs(countDB, fileDB);
	//fputs("|", fileDB);
	fwrite(&base, sizeof(base), 1, fileDB);
	fclose(fileDB);
}

void createDB()
{
        FILE *fileDB;
        if( ! ( getc(fileDB) == EOF ) )
	{
		fileDB = fopen(db, "r");
		//fscanf(fileDB, "%d|", &_count);
		//printf("%d", _count);
		memset(&base, 0, sizeof(base)); // Очистим нашу структуру в памяти
		fread(&base, sizeof(base), 1, fileDB); // Запишем из файла новую
	}

	fclose(fileDB);
}
makar3000 вне форума Ответить с цитированием
Старый 16.11.2015, 09:45   #4
makar3000
Пользователь
 
Регистрация: 26.09.2010
Сообщений: 96
По умолчанию

Я просто не знаю как заставить работать структуру без указания фиксированного кол-ва ячеек base[MAX_DB],
makar3000 вне форума Ответить с цитированием
Старый 16.11.2015, 10:28   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Или может кто знает, как не указывать структуре кол-во записей изначально при ее формировании?
Причем тут структура если речь о массиве структур (base)? Так же, как и для массива не структур. Использовать указатель и выделять память через malloc.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.11.2015, 10:47   #6
makar3000
Пользователь
 
Регистрация: 26.09.2010
Сообщений: 96
По умолчанию

Если честно не понятно , что вы мне пытались сейчас доказать
makar3000 вне форума Ответить с цитированием
Старый 16.11.2015, 10:56   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну, бывает. Перечитывайте до понимания.

В первых двух предложениях говорится о том, что массив не-структур (int, double, ...) ничем не отличается от массива структур относительно данного вопроса.
В последнем о том, как создать массив не фиксированного размера, на какую тему гуглить.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.11.2015, 11:01   #8
makar3000
Пользователь
 
Регистрация: 26.09.2010
Сообщений: 96
По умолчанию

Первое предложение: какой смысл мне переделывать под обычные массивы? И каким образом мне сделать многомерный массив с разными типами данных?!

-------

Второе предложение: погуглил, пока не разобрался. Буду смотреть...
makar3000 вне форума Ответить с цитированием
Старый 16.11.2015, 11:18   #9
makar3000
Пользователь
 
Регистрация: 26.09.2010
Сообщений: 96
По умолчанию

Посидел, поискал. Нечего дельного для двухмерных массивов структур не нашел. Немного не понятно как как и где примять malloc
makar3000 вне форума Ответить с цитированием
Старый 16.11.2015, 11:18   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да причем тут переделывать, я о том, что не надо думать о структурах при поиске решения данного вопроса. Ну то есть разделять задачу на подзадачи.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как при указании типа переменной сослаться на файл? fezilk25 Общие вопросы Delphi 1 25.04.2013 23:45
Сохранение формы в файл. КАК? Pavelsss JavaScript, Ajax 6 28.12.2012 15:59
Сохранение структуры в файл Fellics{новичок} Общие вопросы Delphi 20 20.11.2011 20:21
сохранение нескольких излбражений в один файл.. как? IGWI Мультимедиа в Delphi 7 18.11.2008 23:16
Сохранение в файл сложной динамической структуры _Инженер_ Общие вопросы Delphi 24 20.10.2008 09:38