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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AMakss
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 15
#1

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

19.12.2010, 03:24. Просмотров 847. Ответов 2
Метки нет (Все метки)

Программа работает, только почему-то когда я перезаписываю строчку какую либо(приходиться весь файл перезаписывать ) то перезаписываеться она а старая пропадает к примеру я записал в третью строчку фамилию
---------------
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) - C++
В файле находятся только целые числа. Определить, имеет ли последовательность чисел, находящихся в файле, нечетную длину, и если да, то...

Работа в С++ с файлами .txt - C++
Доброго времени суток. Я хотел бы получить консультацию по таком вопросу: что нужно сделать, чтобы в файле OUTPUT.TXT выводился не первый...

Работа с файлами (вывести в текстовый файл "g.txt" любую цифру из исходного файла "f.txt" с сохранением строгого порядка) - C++
Помогите с задачей. Надо вывести в текстовый файл &quot;g.txt&quot; любую цифру из исходного файла &quot;f.txt&quot; с сохранением строгого...

Работа с файлами. Найти среднее арифметическое всех чисел и записать его в файл output.txt - C++
Помогите написать, пожалуйста 2 программы на C++. В файле input.txt записаны числа, сколько их – неизвестно. «3»: Найти среднее...

В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt - C++
Программным путем: 1. В папке С:\temp создайте папки К1 и К2. 2. В папке К1: a) создайте файл t1.txt, в который запишите следующий...

Записать в text3.txt строки, которые есть и в text1.txt, и в text2.txt - C++
Здравствуйте, нужно записать в text3.txt строки, которые есть и в text1.txt, и в text2.txt помогите, пожалуйста

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
almazsr
232 / 169 / 7
Регистрация: 13.11.2010
Сообщений: 425
19.12.2010, 03:35 #2
После того как записали в файл что-то закрыли его и если хотите изменить конкретную часть то это делается через комбинации ifstream.open(filename) ifstream.seekg(position) ifstream.close() и так по кругу. Либо, можно не закрывая файл проработать все. Смотря какая задача.
AMakss
0 / 0 / 0
Регистрация: 07.12.2010
Сообщений: 15
19.12.2010, 03:50  [ТС] #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();
причем самая странность обстоит в том что в файле это слово есть и в массиве есть до этого момента
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2010, 03:50
Привет! Вот еще темы с ответами:

Переписать все числа из файлов 1.txt и 2.txt в файл 3.txt - C++
Здравствуйте! Нужна помощь. Есть два текстовых файла 1.txt и 2.txt в них есть числа. реализовать консольное приложение которое...

C++ работа с .txt - C++
Подскажите, как в С++ открыть .txt файл и прочитать каждое слово в каждой строке. Большое спасибо!

Работа с txt - C++
Суть в том, что имеется текстовый файл в нем на одной строке два числа через пробел. Мне нужно их поделить друг на друга и записать в...

Работа с txt файлом - C++
Как можно в txt файле взять значение 2 строки или изменить его, после строки добавить еще 1 строку? Еще надо создать файл в котором будут...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru