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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2012, 03:28   #1
leon91
Новичок
Джуниор
 
Регистрация: 15.12.2012
Сообщений: 1
По умолчанию Запись и чтение бинарного файла на Си

Доброго времени суток!

Уже какой час бьюсь над проблемой и не могу никак решить ее

Цитата:
1. Нужно пропарсить данные из текстового файла input.txt следующего формата:

Bari; Nolo acerbam sumere ; 20; 150; 5; 100;
Taranto; Nolo acerbam sumere; 20; 150; 5; 101;
Ancona; Nolo acerbam sumere; 20; 150; 5; 102;
Roma; Nolo acerbam sumere; 20; 150; 5; 103;
Milano; Nolo acerbam sumere; 20; 150; 5; 104;
.....

2. Внести их в структуру, записать в бинарный файл и вывести на экран.

3. Прочесть и отобразить полученный бинарный файл.
Проблема возникает при попытке чтения из файла. Не могу понять, где я ошибаюсь. Очень надеюсь на вашу помощь.

Листинг программы:

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

#define inputfName "input.txt"
#define outputfName "output.txt"

typedef struct
{
	char city[40]; // citta'
	char hotelName[40]; // nome di albergo
	int room1; // numero di stanze singole
	int room2; // numero di stanze doppie
	float room1Cost; // costo di una stanza singola
	float room2Cost; // costo di una stanza doppia
} Alberghi;

void parsingToStruct (FILE *alfa, FILE *beta);
void visualizza (FILE *beta);

int
main()
{
FILE *alfa, *beta;

parsingToStruct (alfa, beta);
visualizza (beta);
}

/* Модуль парсинга и создания бинарного файла */

void 
parsingToStruct (FILE *alfa, FILE *beta)
{
Alberghi albergo1;
int n=0;

alfa=fopen(inputfName,"r");
beta=fopen(outputfName, "wb");

if(alfa==NULL)
    printf("Errore");

else {
    
	rewind(alfa);

	while(fscanf(alfa,"%[^;]; %[^;]; %d; %f; %d; %f;\n",albergo1.city,albergo1.hotelName,&albergo1.room1, &albergo1.room1Cost,&albergo1.room2,&albergo1.room2Cost)!=EOF){
		fwrite(&albergo1, sizeof(Alberghi), n, beta);		    
		printf("\n[%d] %s %s %d %.2f %d %.2f", n, albergo1.city,albergo1.hotelName,albergo1.room1, albergo1.room1Cost,albergo1.room2,albergo1.room2Cost);
		n++;
		}
				
	fclose(alfa);
	fclose(beta);
    
printf("\n\n");
system("pause");
}
}

/* Модуль отображения полученного файла */

void 
visualizza (FILE *beta)
{
Alberghi albergo1;
int stato;
int i=1;

beta=fopen(outputfName,"rb");
stato=fread(&albergo1,sizeof(Alberghi),1,beta);

	while (stato==1){ 
		printf("\n[%d] %s %s %d %.2f %d %.2f", i, albergo1.city, albergo1.hotelName, albergo1.room1, albergo1.room1Cost, albergo1.room2, albergo1.room2Cost);
				i++;
		fread(&albergo1,sizeof(albergo1),1,beta);
		stato=fread(&albergo1,sizeof(Alberghi),1,beta);
		}
		
fclose(beta);

printf("\n\n");
system("pause");
}

Последний раз редактировалось leon91; 15.12.2012 в 03:32.
leon91 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись и чтение бинарного файла Стремящийся Общие вопросы C/C++ 4 27.05.2012 17:33
Чтение и запись бинарного файла sidestep Общие вопросы C/C++ 1 07.04.2012 21:12
Чтение из бинарного файла lioc C# (си шарп) 10 20.02.2012 21:12
запись/чтение из бинарного файла. H1ghlander Общие вопросы C/C++ 0 21.11.2010 17:44
Запись/чтение из бинарного файла - непонятные проблемы.... Jorgen Общие вопросы C/C++ 1 26.11.2009 11:45