Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Ginger

Рыжая


Сообщения: 1550
Благодарности: 19

Профиль | Сайт | Отправить PM | Цитировать


ivank
вобщем в твоём примере я мало чего поняла...
но нашла хорошую книжку, где чуть ли не каждая буковка расталковывается, там прочитала о нужных мне функциях и вот что получилось (без malloc(), fseek(), ftell() etc...)

Код: Выделить весь код
#include <stdio.h>
/* Proga pishit i chitaet dlia odnogo kataloga */

#define FALSE 0
#define TRUE !FALSE

struct vegetables
{
   char name[40];
   int caloricity;
}veg;

void write_info(void);
void read_info(void);

int main(void)
{
   char c;
   int done=FALSE;
	
   while(!done)
   {
	puts("\n            ***:: Vegatables Catalogue ::***\n");
		puts("  A - Add new entry\n");
		puts("  L - List entries\n");
		puts("  Q - Quit\n");
		printf("  Your choice is: ");
		
		c = getch();
		c = tolower(c);
		
		switch(c)
		{
			case('a'):
			     puts("     Add new entry\n");
			     write_info();
			     break;
			case('l'):
			     puts("     List all entries\n");
			     read_info();
			     break;
			case('q'):
			     puts("    Quit\n");
			     done=TRUE;
			     break;
		                default:
		                     puts("    Incorrect letter. Try again.");
		                     done=FALSE;
		                     break;
		}
	}	
}

void write_info(void) 
{
	FILE *veget;
	int calor;
	
	printf("Enter product name: ");
	gets(veg.name);
	printf("Enter its caloricity per 100g: ");
	veg.caloricity = scanf("%i",&calor);
	
	veget = fopen("G:/Studies/Project/programm/vegetables.dat", "a");
	
	if(!veget)
	{
		puts("Error openning file");
		exit(1);
	}
	else
	{
		fwrite(&veg,sizeof(veg),1,veget);
	}
	
	fclose(veget);
	puts("Entry added");
}

void read_info(void)
{
	FILE *veget;
	int x;  
	
	veget = fopen("G:/Studies/Project/programm/vegetables.dat", "r");
	
	if(!veget)
	{
		puts("Error reading file");
		return;
	}
	else
	{
		while(TRUE)
		{
			x=fread(&veg,sizeof(veg),1,veget);
			
			if(!x) break;
			
			printf("\nProduct Name: %s\n",veg.name);
			printf("Its caloricity: %i\n",veg.caloricity);
		}
	}
	fclose(veget);	
}

-------
ХР, 2000, NT - BSOD (синие экраны смерти) русский перевод


Отправлено: 21:19, 28-01-2004 | #9