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

Позиция курсора в файле - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ бинарные деревья http://www.cyberforum.ru/cpp-beginners/thread375717.html
Здравствуйте! Помогите пожалуйста доделать задачу на бинарные деревья. Язык только начали изучать. Дается не очень легко. Пока получилось сделать вот что: #include <iostream> #include <cstdlib> #include <conio.h> #include <stdlib.h> using std::cout;
C++ массив строки - если буду выбирать длину букв =0, вывод "no_string" - если буду писать что начальная позиция больше чем размер строки, вывод "out_of_range". Ввод: Substring 3 6 Вывод: string http://www.cyberforum.ru/cpp-beginners/thread375716.html
C++ Вопрос по типам
фрагмент файла unique_ptr.h: template <typename _Tp, typename _Tp_Deleter = default_delete<_Tp> > class unique_ptr { typedef std::tuple<_Tp*, _Tp_Deleter> __tuple_type; typedef __tuple_type unique_ptr::* __unspecified_bool_type; typedef _Tp* unique_ptr::* __unspecified_pointer_type; ....
Помогите пожалуйста с задачей c++ C++
Дан двухмерный массив вещественных чисел размерностью N*M Заменить все положительные элементы на их удвоенное произведение.
C++ Считать информацию из одного файла, кодировать во второй и декодировать в третий http://www.cyberforum.ru/cpp-beginners/thread375706.html
Привет, как сделать чтобы программа работала с файлом. Т.е. брала информацию из одного, кодировала во второй и декодировала в третий? #include "stdafx.h" #include <iostream> using namespace std; typedef unsigned int uint32_t; void encrypt(unsigned int num_rounds, uint32_t *v, uint32_t const *k) { unsigned int i; uint32_t v0=v, v1=v, sum=0, delta=0x9E3779B9; for (i=0; i <...
C++ Построить рисунок Как вывести точки, рядом проставить номера? подробнее

Показать сообщение отдельно
MYriad
 Аватар для MYriad
0 / 0 / 0
Регистрация: 19.10.2011
Сообщений: 50
31.10.2011, 20:23     Позиция курсора в файле
Подскажите, пожалуйста, как сделать, чтобы в файле отыскивалась нужная (по содержанию) строка, модифицировалась и записывалась обратно: в то же место, в тот же файл.
С поиском нужной строки разобрался:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    fstream base("1.txt");
     char s[80],name[80]="Искомая строка";
     bool b;
     int pos;
     while(!base.eof()){
         b=true;
         base.getline(s,80);
         for(int i=0;s[i]!=' ';++i)
             if(s[i]!=name[i]){
                 b=false;
                 break;
             }
             if(b==true){
                 name="Модифицированная строка";
                 Вот тут нужен код, который заменяет строку;
                 break;
             }
    }
    base.close();
Попробовал через функции fgetpos и fsetpos, пришлось юзать сишные методы работы с файлами, но всё равно не получилось:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
     FILE *base=fopen("1.txt","rt");
     char s[80],name[80]="Искомая строка";
     bool b;
     while(!feof(base)){
         b=true;
         fgets(s,80,base);
         for(int i=0;s[i]!=' ';++i)
             if(s[i]!=name[i]){
                 b=false;
                 break;
             }
             if(b==true){
                 fpos_t pos=fgetpos(base,&pos);
                 fclose(base);
                 base=fopen("1.txt","at");
                 fsetpos(base,&pos);
                 name="Модифицированная строка";
                 fputs(name,base);
                 break;
             }
     }
     fclose(base);
Строка просто дописывается в конец файла.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru