Форум программистов, компьютерный форум CyberForum.ru

Работа с .txt файлами - C++

Восстановить пароль Регистрация
 
AMakss
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 15
19.12.2010, 03:24     Работа с .txt файлами #1
Программа работает, только почему-то когда я перезаписываю строчку какую либо(приходиться весь файл перезаписывать ) то перезаписываеться она а старая пропадает к примеру я записал в третью строчку фамилию
---------------
1 S
2 S
3 Ivanov
4 S
---------------
а потом решил дополнить и в первую строчку записать другую фамилию но получаеться вот так
---------------
1 Sidorov
2 S
3 S
4 S
---------------
смотря по программе вроде бы должно быть вот так(ды и нужно так)
---------------
1 Sidorov
2 S
3 Ivanov
4 S
---------------
Посмотрите пожуйста в чем ошибка а то я уже бессилен
Вот собственно код (правда скорее всего его тяжело будет понять)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include <stdio.h>
#include <conio.h>
#include <fstream.h>
void main(void)
{
int mes,day,t;
char a[24],b[24];
char* YN[15];
clrscr();
///////ввод месяца и проверка ошибки///////////
int i=0;
while (i<1)
 {
 cout <<"BBEDiTE mesac ";
 scanf("%d",&mes);
 if (mes<=12) i++; else {cout <<"!!!НЕВЕРНЫЙ МЕСЯЦ!!!"; getch(); clrscr();}
 }
////////ввод числа и проверка ошибки и проверка четности числа///////////
while (i<2)
 {
 cout <<"BBEDiTE chislo ";
 scanf("%d",&day);
 if (day<=30) {if (day % 2) t=13; else t=9; i++;}
   else  cout <<"!!!НЕВЕРНОЕ ЧИСЛО!!!"<<endl;
 }
///////////создание-чтение файла списка/////////////////
cout<<"Открыть новый список(обнуления списка)? Y|N - ";
cin>>a[0];
if (a[0]=='Y') //обнуление списка
 {
 ofstream book_file("TABLE.txt");
 for(i=0;i<12;i++)
   {
   book_file <<'S'<<endl; //запись в файл s "свободных мест"
   a[i]='S';
   YN[i]="S";
   }
 }
else 
 {
 ifstream input_file("TABLE.txt");
 for(i=0;i<12;i++)
   {
   input_file >>a[i]; //чтение старого списка
   if (a[i]!='S') {a[i]='Z'; input_file>>YN[13];} //вслучие свободного места в массив записываеться s иначе z
   }
 input_file.close();
 }
//////////графическое представления списка////////////////////
cout <<"*******************"<<mes<<"."<<day<<"*******************"<< endl;
cout <<"запишитесь на время S - свободно";
ifstream input_file("TABLE.txt");
int tm=-20;
for(i=0;i<12;i++)
 {
 if (tm==40) {t++; tm=0;} else tm=tm+20;
 input_file>>b;
 YN[i]=b;  //сразу input_file>>YN[i]; чет не пашет((
 printf("\n%d) %d:%.2d  ",i,t,tm);
 cout<<YN[i];
 }
input_file.close();
/////выбор свободного места и регистрация ввиде ввода фамилии///////
i=1;
while (i>0)
 {
 cout<<"\nviberete svobodnoe mesto ot 0 do 11 : ";
 scanf("%d",&i);
 if (i>11)                      // проверка ошибки ввода
  cout<<"!!!nevernii vvod!!! ";
  else
  if (a[i]=='S') //проверка свободного места
    {
    cout << "vvedite familiy : ";
    cin>>a;
    cout<<"********* вы записаны на прием*********"<<endl;
    break;
    }
   else cout<<"ЗАНЯТО"<<endl;
 }
/////запись в файл результата записи в список/////////
YN[i]=a;
ofstream book_file("TABLE.txt");
for(i=0;i<12;i++)
 book_file<<YN[i]<<endl;
book_file.close();
////долгожданный конец////////
getch();
}
О_о Я тут уже бессилен ПОСМОТРИТЕ И УКАЖИТЕ ОШИБКУ
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2010, 03:24     Работа с .txt файлами
Посмотрите здесь:

C++ Работа с txt
Работа с TXT файлом! C++
C++ В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt
Работа в С++ с файлами .txt C++
C++ работа с .txt C++
Работа с файлами (вывести в текстовый файл "g.txt" любую цифру из исходного файла "f.txt" с сохранением строгого порядка) C++
C++ Работа с файлами (.txt)
C++ Записать в text3.txt строки, которые есть и в text1.txt, и в text2.txt

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
19.12.2010, 03:35     Работа с .txt файлами #2
После того как записали в файл что-то закрыли его и если хотите изменить конкретную часть то это делается через комбинации ifstream.open(filename) ifstream.seekg(position) ifstream.close() и так по кругу. Либо, можно не закрывая файл проработать все. Смотря какая задача.
AMakss
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 15
19.12.2010, 03:50  [ТС]     Работа с .txt файлами #3
Almazsr, спасибо))) но дело в том что в это фрагменте я записываю в массив char* YN[15]; всю инфомацию файла "TABLE.txt" и всё записываеться ...

C++
1
2
3
4
5
6
7
8
9
10
11
ifstream input_file("TABLE.txt");
int tm=-20;
for(i=0;i<12;i++)
 {
 if (tm==40) {t++; tm=0;} else tm=tm+20;
 input_file>>b;
 YN[i]=b;  //сразу input_file>>YN[i]; чет не пашет((
 printf("\n%d) %d:%.2d  ",i,t,tm);
 cout<<YN[i];
 }
input_file.close();
НО
к этому моменту у меня пропадает слово в массиве YN

C++
1
2
3
4
5
YN[i]=a;
ofstream book_file("TABLE.txt");
for(i=0;i<12;i++)
 book_file<<YN[i]<<endl;
book_file.close();
причем самая странность обстоит в том что в файле это слово есть и в массиве есть до этого момента
Yandex
Объявления
19.12.2010, 03:50     Работа с .txt файлами
Ответ Создать тему
Опции темы

Текущее время: 00:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru