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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2011, 13:08   #1
Даsha
 
Регистрация: 20.02.2011
Сообщений: 9
По умолчанию Загрузка из файла

Код:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<malloc.h>

struct elem { int i;
elem *next;
};

elem *input(elem *);
void output(elem *);
elem *finput(elem *);
void file_in(elem * );
void freesp(elem *);
int schet(elem *);
elem* file_out(elem *);



void main (void)
{
	elem *start=NULL, *posl=NULL;
	elem *p;
	int l=0;
	int n,w,c;

	do
	{
		clrscr();
		puts("Viberite punct menu\n");
		puts("1.Dobavit' vkonec spiska");
		puts("2.Dobavit' v nachalo spiska");
		puts("3.Vivesti spisok");
		puts("4.Ydalenie 1ogo elementa");
		puts("5.Soxranit' v file");
		puts("6.Zagryzit' iz file");
		puts("7.Vixod");


		switch(getch())
		{
			case'1':
				clrscr();
				if(start==NULL)
				{
					start=input(posl);
					posl=start;
				}
				else
					posl=input(posl);
				w=1;
				getch();
				break;
			case'2':
				clrscr();
				start=finput(start);
				c=1;
				getch();
				break;
			case'3':
				if(w==1 || c==1)
				{
					clrscr();
					output(start);
				}
				else
					puts("Spisok pust");
				getch();
				break;
			case'4':
				if(w==1 || c==1)
				{
					clrscr();
					p=start->next;
					free(start);
					start=p;
					puts("element ydalen");
				}
				else
					puts("Spisok pust");
				getch();
				break;
			case'5':
				file_in(start);
				clrscr();
				puts("File soxranen");
				getch();
				break;
			case'6':
				start=file_out(start);
				clrscr();


			case'7':
				freesp(start);
				clrscr();
				l=1;
				break;
			default:
				puts("net takogo puncta");
				getch();
			}
		}
		while(l==0);
}

elem *input(elem *posl)
{
	if (posl==NULL)
	{
		posl=(elem*)malloc(sizeof(elem));
	}
	else
	{
		posl->next= (elem*)malloc(sizeof(elem));
		posl=posl->next; //perexod na sled element
	}
	puts("Vvedite chislo: \n");
	scanf("%d",&posl->i);
	posl->next=NULL;
	return posl;
}

void output(elem *start)
{
	puts("Prosmotr spiska\n");
	while(start !=NULL)
	{
		printf("%d ",start->i);
		start=start->next;
	}
}

elem* finput(elem* start)
{
	elem *f;
	if(start==NULL)
	{
		start=(elem*)malloc(sizeof(elem));
		puts("Vvedite chislo");
		scanf("%d",&start->i);
		start->next=NULL;
	}
	else
	{
		f=(elem*)malloc(sizeof(elem));
		puts("Vvedite chislo");
		scanf("%d",&f->i);
		f->next=start; //prisvoili poly next znach
		start=f;
	}
	puts("element dobavlen");
	getch();
	return(start);
}

void file_in(elem* start)
{
	int n;
	FILE* fp;
	elem* flw;

	if(start!=NULL)
	{
		n=schet(start);
		printf("%d",n);
		if((fp=fopen("C:\\spisok.txt","wt"))==NULL)
		{
			puts("Oshibka");
			getch();
			exit(1);
		}
		fprintf(stdout,"%d\n",n);
		while(flw)
		{
		       fprintf(fp,"%d",flw->i);
		       flw=flw->next;
		}
	}
	else
		puts("zapisan");
		getch();
		fclose(fp);
}


void freesp(elem *start)
{
	elem *prom;
	printf("ochistka\n");
	prom=start;
	while (prom !=NULL)
	{
		start=start->next;
		free(prom);
		prom=start;
	}
}

int schet(elem* start)
{
	int j=0;
	while(start!=NULL)
	{
		j++;
		start=start->next;
	}
	return j;
}
elem* file_out(elem* start)
{
	int i,n;
	FILE *fp;
	elem *flw;


	if((fp=fopen("C:\\spisok.txt","r"))==NULL)
	{
		puts("Oshibka");
		getch();
		exit(1);
	}
	else
	{
		freesp(start);
		fscanf(fp,"%d",&n);
		flw=start=(elem*)malloc(sizeof(elem));
		for(i=0;i<(n-1);i++)
		{
			fscanf(fp,"%d",&(flw->i));
			flw->next=(elem*)malloc(sizeof(elem));
			flw=flw->next;
		}
		fscanf(fp,"%d",&(flw->i));
		flw->next=NULL;
	}
	fclose(fp);
	return start;


}
Помогите пожалуйста при работе функции elem* file_out(elem* start) (вывод односвязного списка из файла) вылетает из программы
не знаю в чем проблема...

Последний раз редактировалось Stilet; 22.06.2011 в 15:27.
Даsha вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка файла?! Mr.Qwerty Общие вопросы Delphi 1 10.09.2009 21:28
Проблема такова: язык:Delphi7; сохранения файла; загрузка файла в String Grid lightdevil Общие вопросы Delphi 3 06.03.2009 23:10
Загрузка из файла. (*_*) Общие вопросы C/C++ 2 28.02.2009 22:16
Загрузка из файла Raivolo Помощь студентам 3 05.02.2009 22:25
Загрузка Файла Volkogriz Общие вопросы Delphi 3 31.10.2007 21:14