|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
10.05.2010, 22:26 | #1 |
Новичок
Джуниор
Регистрация: 10.05.2010
Сообщений: 3
|
borland C++ 3.1 работа с файлами
с с++ давно не сталкивался.. написал программу. уже несколько часов бьюсь не могу понять почему когда я ввел одну запись в файл он при печати ее выводит 2 раза, а при добавлениях разных вообще не понятно что получается. текст программы -
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <conio.h> #include <complex.h> typedef struct { char fio[50]; int cl; char tel[15]; int a[4]; }skolnik; dobavit() { FILE *f; skolnik s; int d=1; if ((f=fopen("f.dat","ab"))==NULL) exit(1); while (d!=0) { puts("fio " ); gets(s.fio); puts("class " ); cin >>s.cl; puts("tel " ); gets(s.tel); puts("math " ); cin >>s.a[0]; puts("fiz " ); cin >>s.a[1]; puts("rus " ); cin >>s.a[2]; puts("kbn " ); cin >>s.a[3]; fwrite(&s, sizeof(skolnik), 1, f); puts(" vvodit dalshe? 1-yes, 0-no"); cin >>d; } fclose(f); return 1; } dobavitvnachalo() { FILE *f; skolnik s; int i, r; skolnik a[20]; i=0; if ((f=fopen("f.dat","rb"))==NULL) exit(1); while (!feof(f)) { fread(&a[i], sizeof(skolnik), 1, f); i++; } fclose(f); if ((f=fopen("f.dat","wb"))==NULL) exit(1); puts("fio " ); gets(s.fio); puts("class " ); cin >>s.cl; puts("tel " ); gets(s.tel); puts("math " ); cin >>s.a[0]; puts("fiz " ); cin >>s.a[1]; puts("rus " ); cin >>s.a[2]; puts("kbn " ); cin >>s.a[3]; fwrite(&s, sizeof(skolnik), 1, f); r = i; i=0; for (i=0; i<r; i++) fwrite(&a[i], sizeof(skolnik), 1, f); fclose(f); return 1; } pechat() { FILE *f; skolnik s; if ((f=fopen("f.dat","rb"))==NULL) exit(1); while (!feof(f)) { fread(&s, sizeof(skolnik), 1, f); cout <<s.fio <<"\n"; cout <<s.cl <<"\n"; cout <<s.tel <<"\n"; cout <<s.a[0] <<" " <<s.a[1] <<" " <<s.a[2] <<" " <<s.a[3] <<" " <<"\n"; } fclose(f); return 1; } udalit() { FILE *f; skolnik s; int i, r; skolnik a[20]; i=0; if ((f=fopen("f.dat","rb"))==NULL) exit(1); while (!feof(f)) { fread(&a[i], sizeof(skolnik), 1, f); i++; } fclose(f); if ((f=fopen("f.dat","wb"))==NULL) exit(1); r = i; for (i=0; i<r; i++) if ((a[i].a[0]!=2)&&(a[i].a[1]!=2)&&(a[i].a[2]!=2)&&(a[i].a[3]!=2)) fwrite(&a[i], sizeof(skolnik), 1, f); fclose(f); return 1; } main(void) { int d; d=10; while (d!=5) { cout<<"\nvvedite deistvie 1-dobavit, 2-dobavit v nachalo, 3-pechat, 4-udalit, 5-exit\n"; cin >>d; if (d==1) dobavit(); if (d==2) dobavitvnachalo(); if (d==3) pechat(); if (d==4) udalit(); } clrscr; return 1; } |
10.05.2010, 22:28 | #2 |
Новичок
Джуниор
Регистрация: 10.05.2010
Сообщений: 3
|
Или ньанс тут или хз что.. не пойму вообщем.
|
10.05.2010, 22:37 | #3 |
Новичок
Джуниор
Регистрация: 10.05.2010
Сообщений: 3
|
убираю ненужный текст программы -
#include <stdio.h> #include <math.h> #include <stdlib.h> #include <conio.h> #include <complex.h> typedef struct { char fio[50]; int cl; char tel[15]; int a[4]; }skolnik; dobavit() { FILE *f; skolnik s; int d=1; if ((f=fopen("f.dat","ab"))==NULL) exit(1); while (d!=0) { puts("fio " ); gets(s.fio); puts("class " ); cin >>s.cl; puts("tel " ); gets(s.tel); puts("math " ); cin >>s.a[0]; puts("fiz " ); cin >>s.a[1]; puts("rus " ); cin >>s.a[2]; puts("kbn " ); cin >>s.a[3]; fwrite(&s, sizeof(skolnik), 1, f); puts(" vvodit dalshe? 1-yes, 0-no"); cin >>d; } fclose(f); return 1; } pechat() { FILE *f; skolnik s; if ((f=fopen("f.dat","rb"))==NULL) exit(1); while (!feof(f)) { fread(&s, sizeof(skolnik), 1, f); cout <<s.fio <<"\n"; cout <<s.cl <<"\n"; cout <<s.tel <<"\n"; cout <<s.a[0] <<" " <<s.a[1] <<" " <<s.a[2] <<" " <<s.a[3] <<" " <<"\n"; } fclose(f); return 1; } main(void) { int d; d=10; while (d!=5) { cout<<"\nvvedite deistvie 1-dobavit, 2-dobavit v nachalo, 3-pechat, 4-udalit, 5-exit\n"; cin >>d; if (d==1) dobavit(); if (d==3) pechat(); } clrscr; return 1; } программа может добавлять запись в файл и печатать содержимое файла. только криво все... почему? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа со StringGrid(borland C++ builder) | Greenoren | Помощь студентам | 4 | 20.11.2009 22:57 |
Работа с классом TStringStream в Borland C++ | profi | Общие вопросы C/C++ | 2 | 26.07.2009 20:14 |
Строки и работа с файлами на Borland C++ 3.1 | CePryH | Помощь студентам | 6 | 16.06.2009 16:37 |
Работа со строками в Borland C++ | SL1M_DOGG | Помощь студентам | 1 | 08.06.2009 15:36 |
Организация циклов и работа с одномерными массивами в Borland C++ 3.1 | Xeon332 | Помощь студентам | 8 | 25.12.2008 16:55 |