Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.97/30: Рейтинг темы: голосов - 30, средняя оценка - 4.97
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414

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

17.09.2009, 17:08. Показов 6176. Ответов 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);;
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.09.2009, 17:08
Ответы с готовыми решениями:

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

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

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

17
81 / 81 / 6
Регистрация: 14.09.2009
Сообщений: 252
17.09.2009, 17:19
на 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);;
1
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
17.09.2009, 17:53  [ТС]
А как тогда сделать чтобы строка правильно наполнялась(фамилия номер) и записывалась в файл?
Цитата Сообщение от GAV_13 Посмотреть сообщение
fputs(vvod,i); //а где собсна vvod наполняется?
согласен здесь я че то не то сделал
0
0 / 0 / 0
Регистрация: 17.09.2009
Сообщений: 15
17.09.2009, 18:51
мб так?
C++
1
2
ofstream out(FileName);
out << TelSPRAV.Familie << " " << TelSPRAV.Number << endl;
0
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
17.09.2009, 19:08  [ТС]
Nikituki не знаю вообще в учебнике я нашел fputs может с ней
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
17.09.2009, 19:13
Цитата Сообщение от crashc Посмотреть сообщение
в учебнике я нашел fputs может с ней
Определись с языком - С или С++
0
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
17.09.2009, 19:14  [ТС]
на c++ как написать?
0
0 / 0 / 0
Регистрация: 17.09.2009
Сообщений: 15
17.09.2009, 19:16
Код, предложенный мной, не работает?
0
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
17.09.2009, 19:24  [ТС]
понимаешь Nikituki мне надо чтобы записывалось стандартной функцией(т.е. как в учебнике учителя) а то что ты предложил он не давал
0
81 / 81 / 6
Регистрация: 14.09.2009
Сообщений: 252
17.09.2009, 21:22
Цитата Сообщение от crashc Посмотреть сообщение
понимаешь Nikituki мне надо чтобы записывалось стандартной функцией(т.е. как в учебнике учителя) а то что ты предложил он не давал
Ну, для С++ это стандартная функция Хотя, если препод принимает только то что он давал...
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
17.09.2009, 21:39
Небольшие исправления.
Берём за основу код, предложенный 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" (Добавление в конец файла)

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

Теперь вопрос автору: как сделать так, чтобы в файл все данные располагались в приемлемом
формате: построчно, в каждой строке фамилия и номер с пробелом между ними.
Это ты сам думай, как сделать
1
81 / 81 / 6
Регистрация: 14.09.2009
Сообщений: 252
17.09.2009, 21:57
Цитата Сообщение от kravam Посмотреть сообщение
Берём за основу код, предложенный GAV_13,
я ничего не предлагал Я просто выкинул лишние выводы на экран
1
0 / 0 / 0
Регистрация: 17.09.2009
Сообщений: 15
17.09.2009, 22:21
Цитата Сообщение от GAV_13 Посмотреть сообщение
если препод принимает только то что он давал...
Гнать нуно таких преподов.....
0
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
19.09.2009, 12:34  [ТС]
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);
в этих местах программа выдает эту ошибку
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
19.09.2009, 16:26
Цитата Сообщение от crashc Посмотреть сообщение
fputs(vvod.Familie,i);
fputs(vvod.Number,i);
Что такое i?
У fputs в качестве второго параметра файл, т.е. например,
C++
1
2
FILE*f;
fputs (str, f);
1
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
19.09.2009, 19:40  [ТС]
Всем спасибо большое за помощь но я написал несколько другим способом вот он
C++
1
2
3
4
5
6
7
8
9
10
if((i=fopen("u1.txt","at"))==0){
            cout<<"File pust"<<endl;
                }
                fseek(i,0,SEEK_END);
                cout<<"Vvedite familiu"<<endl;
                cin>>vvod.Familie;
                cout<<"Vvedite telefon"<<endl;
                cin>>vvod.Number;
                fwrite(&vvod,sizeof(TelSPRAV),1,i);
                fclose(i);
0
Путешественница
 Аватар для MotherBoard
1250 / 478 / 11
Регистрация: 22.02.2009
Сообщений: 2,842
19.09.2009, 20:11
Цитата Сообщение от crashc Посмотреть сообщение
понимаешь Nikituki мне надо чтобы записывалось стандартной функцией(т.е. как в учебнике учителя) а то что ты предложил он не давал
Не всегда учителя дают всё! Другой раз дают как специально,не до конца... Чтобы вы сами что-нибудь придумали....
0
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
20.09.2009, 02:41
crashc, понятно всё. У меня в K&R такие режимы написаны, у тебя эдакие, Для того и форум, чтобы уточнять- и делать в памяти себе зарубки.

Насчёт твоей идеи- не разбирался, но с ходу если, понимаешь, когда ты объявляешь переменую типа TelSPRAV, у тебя вызывается так называемый конструктор, который обнуляет все поля этой переменной.

(В учебниках по С эта деталь почему-тообходится стороной. А в учебниках по С++ говорится, о вызове конструкторов для такой штуке как class и тут же говорится, что вообще-то class и struct это одно и тоже (понятно дело с оговорками!). Но оговорки эти вызова конструтора не касаются)

Так что после создания переменной vvod там будут одни ноли. Не мусор, а именно ноли. Обнулять что-то нет необходимости то есть.
Почему fputs не срабатывало 2 раза подряд, ума не приложу. Там разбираться надо было с i, которая, qwert, с самого начала темы фигурировала как
C++
1
FILE*
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.09.2009, 02:41
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru