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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 40, средняя оценка - 4.90
crashc
23 / 23 / 4
Регистрация: 26.07.2009
Сообщений: 414
#1

Запись/Удаление строки из файла - C++

17.09.2009, 17:08. Просмотров 5104. Ответов 17
Метки нет (Все метки)

Помогите с записью строки в файл, вообще если что задание написать "Телефонный справочник" в каждой строке которого должно быть две позиции Familie и Number. Может у меня структура написана не правильно или сама функция записи строки, не знаю. удаление пока не рассматривал, мне бы с этим разобраться.
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
const dl=100;
int klts,kol=0;
FILE*i,*u;
char dstv=0,dstv2=0;
struct TelSPRAV{
char Familie[20];
char Number[15];
       }TelSPRAV,*vvod;
char find[15];
char str[dl];
cout<<"Dobavit' zapis'"<<endl;
                if((i=fopen("H:\\My documents\\u1.txt","t"))==0){
            cout<<"File pust"<<endl;}
//по заданию это должно делать через второй файл и записываться в двоичном режиме
                if((u=fopen("H:\\My documents\\bfl.out","w+b"))==0){
                cout<<"Oshbka otkritie vihodnogo file";}
                cout<<"Vvedite familiu"<<endl;
                cin>>TelSPRAV.cout<<"Dobavit' zapis'"<<endl;
                if((i=fopen("H:\\My documents\\ÓÏÈ\\Programmirovanie\\Visual\\Works\\C++\\Modulnoe\\vvod vivod\\u1.txt","t"))==0){
            cout<<"File pust"<<endl;}
                if((u=fopen("H:\\My documents\\ÓÏÈ\\Programmirovanie\\Visual\\Works\\C++\\Modulnoe\\vvod vivod\\bfl.out","w+b"))==0){
                cout<<"Oshbka otkritie vihodnogo file";}
                cout<<"Vvedite familiu"<<endl;
                cin>>TelSPRAV.Familie;
                cout<<"Vvedite telefon"<<endl;
                cin>>TelSPRAV.Number;
                fputs(vvod,i);
                fclose(u);
                fclose(i);;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.09.2009, 17:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Запись/Удаление строки из файла (C++):

Чтение текста из файла, удаление каждой второй строки (\n), запись в файл - C++
Дана строка у текстовом файле input.txt: Teachers TV's resources Have generated views Teachers TV content is now available On TES...

Удаление строки из файла\либо удаление самого файла. - C++
День добрый, вот функция(используемые переменные объявленны ранее): void delete_cruise() { FILE *fout; open_file(&quot;abase.dat&quot;); ...

Запись структуры в файл, чтение из файла и удаление (файловый ввод/вывод) - C++
Добрый вечер! Возникла такая проблема, что при добавлении записи, удаляются уже имеющиеся записи в файле. Также не помешала бы помощь в...

Удаление строки из файла - C++
Сабж, осуществляю ввод и вывод с помощью iostream и использованием векторного массива, нужно удалить строку из файла... Интересует пример...

Удаление строки из файла - C++
Здравствуйте! Подскажите пожалуйста, как реализовать функцию удаления нужной строки из файла. Только не по номеру, а по содержимому! Я так...

Удаление строки из файла - C++
Кто может подсказать рабочую функцию удаление строки из файла. Поиск строки не нужен, только удаление :)

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
GAV_13
81 / 81 / 4
Регистрация: 14.09.2009
Сообщений: 252
17.09.2009, 17:19 #2
на 18 строке слито 2 куска кода)
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
const dl=100;
int klts,kol=0;
FILE*i,*u;
char dstv=0,dstv2=0;
struct TelSPRAV
{
  char Familie[20];
  char Number[15];
}TelSPRAV,*vvod;
char find[15];
char str[dl];
 
                cout<<"Dobavit' zapis'"<<endl;
                if((i=fopen("H:\\My documents\\УПИ\\Programmirovanie\\Visual\\Works\\C++\\Modulnoe\\vvod vivod\\u1.txt","t"))==0){
                cout<<"File pust"<<endl;}
                if((u=fopen("H:\\My documents\\УПИ\\Programmirovanie\\Visual\\Works\\C++\\Modulnoe\\vvod vivod\\bfl.out","w+b"))==0){
                cout<<"Oshbka otkritie vihodnogo file";}
                cout<<"Vvedite familiu"<<endl;
                cin>>TelSPRAV.Familie;
                cout<<"Vvedite telefon"<<endl;
                cin>>TelSPRAV.Number;
                fputs(vvod,i); //а где собсна vvod наполняется?:)
                fclose(u);
                fclose(i);;
crashc
23 / 23 / 4
Регистрация: 26.07.2009
Сообщений: 414
17.09.2009, 17:53  [ТС] #3
А как тогда сделать чтобы строка правильно наполнялась(фамилия номер) и записывалась в файл?
Цитата Сообщение от GAV_13 Посмотреть сообщение
fputs(vvod,i); //а где собсна vvod наполняется?
согласен здесь я че то не то сделал
Nikituki
0 / 0 / 0
Регистрация: 17.09.2009
Сообщений: 15
17.09.2009, 18:51 #4
мб так?
C++
1
2
ofstream out(FileName);
out << TelSPRAV.Familie << " " << TelSPRAV.Number << endl;
crashc
23 / 23 / 4
Регистрация: 26.07.2009
Сообщений: 414
17.09.2009, 19:08  [ТС] #5
Nikituki не знаю вообще в учебнике я нашел fputs может с ней
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
17.09.2009, 19:13 #6
Цитата Сообщение от crashc Посмотреть сообщение
в учебнике я нашел fputs может с ней
Определись с языком - С или С++
crashc
23 / 23 / 4
Регистрация: 26.07.2009
Сообщений: 414
17.09.2009, 19:14  [ТС] #7
на c++ как написать?
Nikituki
0 / 0 / 0
Регистрация: 17.09.2009
Сообщений: 15
17.09.2009, 19:16 #8
Код, предложенный мной, не работает?
crashc
23 / 23 / 4
Регистрация: 26.07.2009
Сообщений: 414
17.09.2009, 19:24  [ТС] #9
понимаешь Nikituki мне надо чтобы записывалось стандартной функцией(т.е. как в учебнике учителя) а то что ты предложил он не давал
GAV_13
81 / 81 / 4
Регистрация: 14.09.2009
Сообщений: 252
17.09.2009, 21:22 #10
Цитата Сообщение от crashc Посмотреть сообщение
понимаешь Nikituki мне надо чтобы записывалось стандартной функцией(т.е. как в учебнике учителя) а то что ты предложил он не давал
Ну, для С++ это стандартная функция Хотя, если препод принимает только то что он давал...
kravam
быдлокодер
1694 / 881 / 44
Регистрация: 04.06.2008
Сообщений: 5,441
17.09.2009, 21:39 #11
Небольшие исправления.
Берём за основу код, предложенный GAV_13,
Из объявления стрктуры убираем
C++
1
TelSPRAV,*
И получаем нормальную структурку vvod типа TelSPRAV
После этого из текста убираем TelSPRAV (структуры с таким именем нет), а пишем vvod.

Потом вместо вот этого
C++
1
fputs(vvod,i);
Пишем
C++
1
2
fputs(vvod.Familie,i); 
fputs(vvod.Number,i);
Ну, то есть в файл занесли фамилию и номер.
Одной строкой не занести, потому что между ними знак конца строки, щас не размышляю
над этим

Теперь ещё я посмотрел режим открытия файла, куда будем записывать, у меня в книги
такого режима нет ("t"), открываем с режимом "a" (Добавление в конец файла)

Дальше, я так и не понял, зачем нам ещё один файл? Работаем с одним, заносим в него
данные с консоли, открываем два, странно.
Пишем все заголовочные файлы.

Теперь вопрос автору: как сделать так, чтобы в файл все данные располагались в приемлемом
формате: построчно, в каждой строке фамилия и номер с пробелом между ними.
Это ты сам думай, как сделать
GAV_13
81 / 81 / 4
Регистрация: 14.09.2009
Сообщений: 252
17.09.2009, 21:57 #12
Цитата Сообщение от kravam Посмотреть сообщение
Берём за основу код, предложенный GAV_13,
я ничего не предлагал Я просто выкинул лишние выводы на экран
Nikituki
0 / 0 / 0
Регистрация: 17.09.2009
Сообщений: 15
17.09.2009, 22:21 #13
Цитата Сообщение от GAV_13 Посмотреть сообщение
если препод принимает только то что он давал...
Гнать нуно таких преподов.....
crashc
23 / 23 / 4
Регистрация: 26.07.2009
Сообщений: 414
19.09.2009, 12:34  [ТС] #14
kravam смотри вот че у меня написано в учебнике:
"a" − для добавления информации в конец файла;
Режим открытия может также содержать символы "t" (текстовый режим) или "b" (двоичный режим)

Добавлено через 14 минут
kravam может сделать таким образом
C++
1
vvod.Familie[19]='\0';
а потом каким нибудь оператором можно продолжить запись в этой же строке?

Добавлено через 7 минут
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 326663A1. Read of address F87E4A68'. Process stopped. Use Step or Run to continue.

Цитата Сообщение от kravam Посмотреть сообщение
C++
1
2
fputs(vvod.Familie,i); 
fputs(vvod.Number,i);
в этих местах программа выдает эту ошибку
.::.DIMA.::.
143 / 143 / 4
Регистрация: 26.10.2008
Сообщений: 782
19.09.2009, 16:26 #15
Цитата Сообщение от crashc Посмотреть сообщение
fputs(vvod.Familie,i);
fputs(vvod.Number,i);
Что такое i?
У fputs в качестве второго параметра файл, т.е. например,
C++
1
2
FILE*f;
fputs (str, f);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2009, 16:26
Привет! Вот еще темы с ответами:

Удаление строки из файла - C++
В общем у меня есть текстовый документ, в котором что-то записано таблицей. И мне надо удалить из неё какую-либо строку. Я решил читать...

Удаление из файла строки - C++
Есть файл (computers.dat) куда записываются данные (структура) о компьютерах (тип, год, цена). Задание: Пользователь вводит год...

Удаление строки файла - C++
Подскажите как удалить строку из файла? я знаю что можно перезаписывать файл, удалить из первого файла строку и записать в другой файл.

Удаление строки из файла - C++
Добрый день, возник вопрос возможно ли удалить/изменить в файле слово/строку, не перезаписывая при этом весь файл?


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
19.09.2009, 16:26
Ответ Создать тему
Опции темы

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