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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2008, 23:45   #1
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию struct и файлы

вообщем такая задача имееться некоторая структура с множеством полей:
Код:
struct stud {
               char mat;
               char geom;
               char dif;
               char kse;
               char vich;
               char metodpr;
               char matlog;
               char srbal;
               char kto;
            };
множество таких струтур нужно записать файл а потом члено раздельно извлечь для дальнейшей обработки.
У меня идея возникла одна,так как все поля целые числа,просто сделать такую строчку
Код:
string s=mat+'$'+geom+'$'+dif+'$'+...(etc)
потом доставать их ориентируясь на разделяющий знак,в данном варианте "$".
Так вот в чем вопрос,может можно реализовать как то более просто и красиво?
bondik вне форума Ответить с цитированием
Старый 06.11.2008, 01:15   #2
Vladko
Пользователь
 
Регистрация: 13.10.2008
Сообщений: 17
По умолчанию

Э-э, на кой фиг эти доллары? У тебя же размер один и тот же на все елементы структуры. Убираешь нафиг долары и получаешь
s[0] это mat
s[1] - geom
...
s[8] - kto

В принципе, тебе даже "string s" нужен. В линусовском ядре видел вооще такую дикость. Там же структур, как не резанных программеров, немерянно, и че чуваки делают. Вот такую структурку создают, обзовут ее таблицей сигналов и пользуют как Бог дьявола.
Приколись, что то типа того что ты хошь сделать linux-way...короче дикость
Код:
#include <iostream>
#include <string>
using namespace std;

#define MAT		0
#define GEOM	1
#define DIF		2
#define KSE		3
#define VICH	4
#define METODPR	5
#define MATLOG	6
#define SRBAL	7
#define KTO		8
#define TOPSTUD 9

struct stud {
	char mat;
	char geom;
	char dif;
	char kse;
	char vich;
	char metodpr;
	char matlog;
	char srbal;
	char kto;
};

void printMyStud(struct stud& ls);
int main(void)
{
	struct stud supastud;
	string buff = "Go 2 Hell";
	
	char* astud = reinterpret_cast<char*>(&supastud);
	for(int i=0;i < TOPSTUD; i++)
		astud[i] = buff[i];
	printMyStud(supastud);

	// Menyaem malek
	astud[MAT] = 'D';
	astud[KSE] = ' ';
	astud[METODPR] = 'W';
	cout << "pomenyali malek" << endl;
	printMyStud(supastud);

	return 0;
}

void printMyStud(struct stud& ls)
{
	cout << ls.mat
		<< ls.geom
		<< ls.dif
		<< ls.kse
		<< ls.vich
		<< ls.metodpr
		<< ls.matlog
		<< ls.srbal
		<< ls.kto
		<< endl;
	return;
}

Последний раз редактировалось Vladko; 06.11.2008 в 01:58. Причина: Добавил выпендрежу
Vladko вне форума Ответить с цитированием
Старый 06.11.2008, 12:49   #3
bondik
Форумчанин
 
Регистрация: 24.04.2008
Сообщений: 300
По умолчанию

Дык я сказал,числа а не цифры,то есть могут быть 1 значные а могут быть и 5 значные,конеш можно все подводить к наибольшезначному дописывая нолики а потом вырывать по 5...А мож хидер есть какойнить для решения таких задач?
bondik вне форума Ответить с цитированием
Старый 06.11.2008, 14:46   #4
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2bondik автор, ты некомпетентен. ты вообще в курсе, что чар это восьми битовое поле? и туда макс влезет от 0 до 255. а ты пятизначные зогонять собрался. вобщем, опиши КОНКРЕТНУЮ задачу, что тебе в итоге надо сделать, я тебе посоветую, возможно кодом.

пс. а из файла структуры достаются не по долларам всяким, а по размеру структуры. размер то тебе известен
vvviperrr вне форума Ответить с цитированием
Старый 06.11.2008, 21:23   #5
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

Цитата:
Сообщение от vvviperrr Посмотреть сообщение
2bondik автор, ты некомпетентен. ты вообще в курсе, что чар это восьми битовое поле? и туда макс влезет от 0 до 255. а ты пятизначные зогонять собрался. вобщем, опиши КОНКРЕТНУЮ задачу, что тебе в итоге надо сделать, я тебе посоветую, возможно кодом.
ios::binary для лохов придумали?

Цитата:
Сообщение от vvviperrr Посмотреть сообщение
пс. а из файла структуры достаются не по долларам всяким, а по размеру структуры. размер то тебе известен
если будет текстовый файл, то размер не будет известен.
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 06.11.2008, 22:31   #6
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2alexinspir а кто в текстовый файл структуры записывает? и первый твой камент на мой пост мне непонятен. поясни плиз
vvviperrr вне форума Ответить с цитированием
Старый 07.11.2008, 04:35   #7
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

я чет не вник изначально. я понял изначально что вы хотите писать их в текстовый файл:

Код:
cout << ls.mat
		<< ls.geom
		<< ls.dif
		<< ls.kse
		<< ls.vich
		<< ls.metodpr
		<< ls.matlog
		<< ls.srbal
		<< ls.kto
		<< endl;
(cout-ом можно и в текстовый файл сразу писать[cgi-scripts for example].)
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 07.11.2008, 08:13   #8
Vladko
Пользователь
 
Регистрация: 13.10.2008
Сообщений: 17
По умолчанию

Это я просто поизвращался, типа показывал что со структурами с равноразмерными полями можно работать как с массивами.

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

Последний раз редактировалось Vladko; 07.11.2008 в 08:16.
Vladko вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
файлы StartMis Общие вопросы Delphi 9 27.08.2008 09:26
Файлы NeiL Win Api 3 24.07.2008 17:02
struct vs MASM format Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 09.05.2008 17:54
Файлы Logan Паскаль, Turbo Pascal, PascalABC.NET 6 01.04.2008 10:15
два вредных вопроса:про асю и прикриплёные файлы файлы steck Свободное общение 3 17.06.2007 14:53