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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2014, 23:00   #1
iMorgana
Новичок
Джуниор
 
Регистрация: 02.05.2014
Сообщений: 1
По умолчанию Некорректно записываются данные(структуры) в файл

Здравствуйте. Программа состоит в том, что я ввожу данные по продавцам, программа считает по каждому общее кол-во и выводит все это в файл. Ввод в файл у меня работает, но в файл записывается ерунда и не отображается в программе. float time, int ves,shtuk и char FIO[100] я ввожу с клавиатуры, а float at,ot,oat; int os,ov; эти данные считает программа в функции output и должна выводить. Помогите, пожалуйста, исправить, что бы вывод корректно работал
Код
Код:
 #include<stdio.h>
#include<conio.h>
#include<string.h>
 
struct seller   
{
char FIO[100];
float time,at,ot,oat;
int ves,shtuk,os,ov;
} ;
 
 
void input()   // функция ввода данных в файл струкрурами
{
seller st;
char filename[]="sellers.dat" ;
char S='\0';
FILE *f;
clrscr();
f=fopen(filename,"rb+");
if(f)
{
do
{
fflush(stdin);
printf("\n File is existed. Choose the option:");
printf("\n 0 - recreate file");
printf("\n 1 - add data in existed file");
printf("\n 2 - open file");
printf("\n 3 - refuse to enter");
S=getch();
if(S=='0')
f=fopen(filename,"rb+");
else if(S=='1') f=fopen(filename,"ab+");
else if(S=='2') f=fopen(filename,"rb");
}
while(S!='0' && S!='1' && S!='2' && S!='3');
}
else
f=fopen(filename,"wb+");
if(S!='3'&& S!='2')
{
do
{
fflush(stdin);
 
printf("\n Famaliay I. O. : ");
 
gets(st.FIO);
 
printf("\n Time = ");
 
scanf("%f",&st.time);
 
printf("\n Weight things = ");
 
scanf("%d",&st.ves);
 
printf("\n Things = ");
 
scanf("%d",&st.shtuk);
 
st.at=st.time/(3*st.ves+st.shtuk);
 
printf("\n Service time of one purchase = %5.2f",st.at);
 
fwrite(&st,sizeof(st),1,f);
printf("\n Continue entering? Enter y(yes) or n(no) " );
fflush(stdin);
S=getchar();
}
while(S=='y') ;
fclose(f);
}
}
 
 
void output()    // вывод данных
{
seller st;
char filename[]="sellers.dat";
int os,ov,n;
float ot,oat;
FILE *f;
clrscr();
f=fopen(filename,"rb+");
if(f)
{
fseek(f,0,SEEK_END);
n=ftell(f)/sizeof(seller); // считаю количество структур
seller* sell=new seller [n]; // создаю массив sell из n элементов структур seller
fseek(f,0,SEEK_SET);
for(int i=0;i<n;i++)
fread(&sell[i],sizeof(sell),n,f);
printf("\n FIO / Weight Things / Time / Service Time Of One Purchase ");  // то, что должно выводиться
for(i=0;i<n-1;i++)
{
int k=1;
for(int j=i+1;j<n;j++)
{
if(strcmp(sell[i].FIO,sell[j].FIO)==0 && sell[j].FIO!="\0"); // сравниваю фамилии
{
k++;
strcpy(sell[j].FIO,"\0"); 
}
st.oat=(sell[i].at+sell[j].at); // выполняю расчет выводимых данных
st.ov=sell[i].ves+sell[j].ves;
st.os=sell[i].shtuk+sell[j].shtuk;
st.ot=sell[i].time+sell[j].time;
}
st.oat=st.oat/k;
printf("\n %25s/%2d/%2d/%f/%5.2f",st.FIO,st.ov,st.os,st.ot,st.oat); // печать
}
printf("Press any key");
fflush(stdin);
fclose(f);
}
}
 
void main()
{
int p;
do
{
clrscr();
printf("Seller data \n");
printf("1 - Enter data \n");
printf("2 - Review data \n");
printf("3 - Exit \n");
scanf("%d",&p);
 
 switch(p)
  {
    case 1 : input(); break;
    case 2 : output(); break;
  }
}
while(p!=3);
}

Последний раз редактировалось Stilet; 02.05.2014 в 23:16.
iMorgana вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не записываются данные в mysql через php impeee PHP 8 08.04.2014 09:47
задача: есть БД с 2 файлами в которые записываются данные о квартирах, выбрать нужные данные lexa_7up Помощь студентам 4 11.01.2014 19:37
Данные записываются в файл некорректно koza4e4ok Помощь студентам 0 18.04.2013 21:53
не записываются данные по указанному адресу s2dentishe Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 27.05.2010 14:42
Данные записываются в бд не в том порядке, в котором надо. Krasi PHP 13 12.03.2010 11:40