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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2010, 06:16   #1
katushka-1990
Новичок
Джуниор
 
Регистрация: 22.03.2010
Сообщений: 2
По умолчанию Как записать структуру в файл? и прочитать потом.

написана структура со списком. как эту структуру записать в файл и прочитать из файла? ниче не получается. может структура не правильная или с указателями напутала. Перечитала кучу тем на форуме, попробовала многие, но структура не сохраняется либо сама программа зависает вообще! Помогите плиз!!!
Код:
struct User
{
 char name[30];
 User *next;
};

int _tmain(int argc, _TCHAR* argv[])
{
   User *start;              // указатель на начало списка
   char str[30];
   User *spis = new User;    // создаем список
   int f;
   strcpy(spis->name,"3");   // инициализируем его данными
   spis->next = NULL;        // следующий элемент - NULL
   start = spis;             // запоминаем начало

   for(int i=1; i<5; i++)    // добавим 4 элементов
   {
	  spis->next = new User;   // создаем элемент (и сразу устанавливаем ссылку на него из текущего)
	  printf("vvedite vladelica: ");
	  scanf("%s", &str);
	  strcpy(spis->next->name,str);  // добавляем данные
	  // scanf("%s", spis->next->data);
	  spis->next->next = NULL;   // следующий элемент - NULL
	  spis = spis->next;     // делаем новый элемент текущим
   }
   cout<<"1 - vivesti"<<endl;
   cout<<"2 - dydalit"<<endl;
   cout<<"3 - sohranit"<<endl;
   cin>>f;
   switch(f)
   {
	  case 1:
	  {
		 printf("\n");
		 spis = start;
		 while(spis)
		 {
			printf("%s\n",spis->name);
			spis = spis->next;
		 }
		 FILE *f;
		 if((f=fopen("1.txt", "w"))==NULL)
		 {
			printf("Ошибка при открытии файла.\n");
			exit(1);
		 }
		// while(!feof(f))
		 while(spis)
		 {
			fprintf(f, "%s", spis->name);
			spis = spis->next;
		 }
		 fclose(f);
	  }
	  break;
	  case 2:    // удаляем
	  {
		 User *tmp;
		 spis = start;
		 while(spis)
		 {
			tmp = spis;
			spis = spis->next;
			delete tmp;
		 }
		 printf("\n\n");
		spis = start;
		while(spis)
		{
		   printf("%s\n",spis->name);
		   spis = spis->next;
		}
	  }
	  break;
   }
   getch();
   return 0;
}

Последний раз редактировалось katushka-1990; 23.03.2010 в 06:27.
katushka-1990 вне форума Ответить с цитированием
Старый 23.03.2010, 08:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Если без указателей и динсписков то вот пример:
Код:
//---------------------------------------------------------------------------

#pragma hdrstop

#include <tchar.h>
#include <iostream.h>
#include <fstream.h>
//---------------------------------------------------------------------------

#pragma argsused
struct{
 char dest[20],time[10];
 int dlitel;
} abus[3];
int _tmain(int argc, _TCHAR* argv[])
{
 FILE *f=fopen("c:\\temp\\File1.txt","wb+");
 for (int i = 0; i < 3; i++) {
  cout<<"Destination ";cin>>abus[i].dest;
  cout<<"Time ";cin>>abus[i].time;
  cout<<"Dliteln ";cin>>abus[i].dlitel;
  cout<<'\n';
  fwrite(&abus[i],sizeof(abus[i]),1,f);
 }
 //********************************************

 fclose(f);
 f=fopen("c:\\temp\\File1.txt","rb");
 for (;!feof(f);) {
  fread(&abus[0],sizeof(abus[0]),1,f);
  cout<<"Destination "<<abus[0].dest;
  cout<<"Time "<<abus[0].time;
  cout<<"Dliteln "<<abus[0].dlitel;
  cout<<'\n';
 }
 system("pause");
return 0;
}
//---------------------------------------------------------------------------
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.03.2010, 10:07   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Код:
	  case 1:
	  {
		 printf("\n");
		 spis = start;
		 while(spis)
		 {
			printf("%s\n",spis->name);
			spis = spis->next;
		 }
		 FILE *f;
		 if((f=fopen("1.txt", "w"))==NULL)
		 {
			printf("Ошибка при открытии файла.\n");
			exit(1);
		 }
		spis = start;
		 while(spis)
		 {
			fprintf(f, "%s", spis->name);
			spis = spis->next;
		 }
		 fclose(f);
	  }
а где чтение из файла?
pu4koff вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записать структуру в файл iLLUMIN Общие вопросы C/C++ 10 28.02.2010 23:57
Как записать данные в MySQL бузу а потом считать их SeRhy PHP 1 12.06.2009 22:15
Прочитать файл и записать данные в массив ChukCha Общие вопросы C/C++ 6 22.02.2009 19:56
как выделить память для указателя (pointer), и сюда же, записать : integer, потом через 4 байта, boolean? bigxman Общие вопросы Delphi 1 02.02.2009 21:17
Как записать и прочитать переменную моего типа из реестра? Никки Общие вопросы Delphi 2 09.12.2007 13:56