Форум программистов, компьютерный форум, киберфорум
C++: WinAPI
Войти
Регистрация
Восстановить пароль
 
4 / 4 / 2
Регистрация: 04.06.2015
Сообщений: 161
1

C++ Работа с Текстовым файлом

23.11.2017, 14:17. Просмотров 361. Ответов 7
Метки нет (Все метки)

Как добавить текст в текстовый файл( не пустой) (добавить не в конец) c++ или winapi.
Например имеется файл text.txt:
Hello word!!!

Нужно изменить text.txt например так:
HellThis is my texto word!!!

Считывать весь текст, изменять, а потом записывать - не подойдет.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2017, 14:17
Ответы с готовыми решениями:

Работа с большим текстовым файлом
Мне нужно написать текстовый редактор для больших файлов. Использую memory mapped files (где можно...

GUI Работа с текстовым файлом, лог файлом не мешая системе
Хочу написать прогу которая будет по таймеру искать в тхт - лог файле сообщение об ошибке. Например...

Работа с текстовым файлом С++
Здравствуйте! Помогите написать программу которая будет выводить на консоль студентов, имеющих по...

Работа с текстовым файлом
Здравствуйте ребята, на практических столкнулась с проблемой, необходима ваша помощь) Есть...

7
Software Developer
303 / 219 / 111
Регистрация: 03.05.2017
Сообщений: 1,046
23.11.2017, 14:52 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
#include <iostream>
#include <windows.h>
 
int main ()
{
    HANDLE hFile = CreateFile ("file.txt", GENERIC_WRITE, 0, NULL, TRUNCATE_EXISTING, 0, NULL);
    if (hFile)
    {
         DWORD dwCount;
         char szText [] = "HellThis is my texto word!!!";
         if (!WriteFile (hFile, szText, strlen (szText), &dwCount, NULL))
         {
              // ... error ...
         }
         CloseHandle (hFile);
    }
    else
    {
         // ... error ...
    }
    system ("pause > nul");
    return 0;
}
Добавлено через 5 минут
Цитата Сообщение от decrement Посмотреть сообщение
если я всё правильно понял, то так
нет, я наверное неправильно понял) тогда так
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
#include <iostream>
#include <windows.h>
 
int main ()
{
    HANDLE hFile = CreateFile ("file.txt", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
    if (hFile)
    {
         char szText0 [] = "Hell";
         int offset = strlen (szText0); 
         SetFilePointer (hFile, offset, NULL, FILE_BEGIN);
         
         DWORD dwCount;
         char szText [] = "This is my texto word!!!";
         if (!WriteFile (hFile, szText, strlen (szText), &dwCount, NULL))
         {
              // ... error ...
         }
         CloseHandle (hFile);
    }
    else
    {
         // ... error ...
    }
    system ("pause > nul");
    return 0;
}
0
4 / 4 / 2
Регистрация: 04.06.2015
Сообщений: 161
23.11.2017, 16:21  [ТС] 3
Наверно я плохо объяснил. Имеется файл с текстом. Нужно добавить строку например "This is my text" в произвольное место (не в конец файла) при этом все содержимое в тексте должно остаться.

Например в файле есть текст(До работы программы):
Произвольный текст

После работы программы:
ПроиThis is my textзвольный текст

Если делать WriteFile то функция затирает уже имеющееся текст.
0
Software Developer
303 / 219 / 111
Регистрация: 03.05.2017
Сообщений: 1,046
23.11.2017, 17:06 4
Цитата Сообщение от Sierra26 Посмотреть сообщение
Наверно я плохо объяснил. Имеется файл с текстом. Нужно добавить строку например "This is my text" в произвольное место (не в конец файла) при этом все содержимое в тексте должно остаться.
нет такой стандартной функции в WinAPI)
вам всё равно нужно считать весь текст с того места в которое хотите вставить текст, вставить, и тогда дописать оставшуюся часть
0
4 / 4 / 2
Регистрация: 04.06.2015
Сообщений: 161
23.11.2017, 17:13  [ТС] 5
А если текст очень большой, то как быть?
0
90 / 90 / 20
Регистрация: 16.08.2017
Сообщений: 182
Записей в блоге: 1
23.11.2017, 17:41 6
Здравствуйте!
Цитата Сообщение от Sierra26 Посмотреть сообщение
А если текст очень большой, то как быть?
Тут как мне кажется два варианта:
Использование временного файла
1. Открываем файл для чтения.
2. Создаем и открываем временный файл для записи.
3. Читаем первый файл (например построчно) и пишем эти строки во второй файл пока не дойдем до места, куда нужно вставить текст
4. Вставляем текст во временный файл.
5. Продолжаем копировать построчно из одного файла в другой.
6.Закрываем оба файла.
7.Удаляем первый.
8.Переименовываем второй.

Использовать для временного размещения файла память. По сути тоже, что и в первом случае, но с размещением в оперативной памяти.
0
4 / 4 / 2
Регистрация: 04.06.2015
Сообщений: 161
23.11.2017, 17:46  [ТС] 7
На счет первого варианта так и хотел сделать, но боюсь за информацию. Если временный файл не заполниться по каким-то причинам то первый файл удалится а во 2 нечего не будет.
На счет второго варианта можно поподробней. Не известно сколько символов в файле. На сколько мне выделять массив символов?
0
90 / 90 / 20
Регистрация: 16.08.2017
Сообщений: 182
Записей в блоге: 1
23.11.2017, 19:17 8
Вот тут подробней описано (и кажется с примером) Загрузка файла в память
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2017, 19:17

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Работа с текстовым файлом
В ОБЩЕМ ЗАДАЧА СОСТОИТ В СЛЕДУЮЩЕМ: В текстовом файле информация хранится в следующем виде: ...

Работа с текстовым файлом
Задание: &quot;Удалить все четные числа из текстового файла&quot; Предварительно я загрузила текстовый...

Работа с текстовым файлом
Прошу помощи. Должно быть консольное приложение. Описываю последовательность действий. Текстовый...

Работа с текстовым файлом
Ниже представлен код программы, которая ищет символ заданный пользователем в txt файле...

Работа с текстовым файлом
Поставлена задача находить ссылки на страницы из загруженной страницы HTML. ее получаю благодаря...

Работа с текстовым файлом
Нужно программа которая добавляет записи в файл вида: - Структура &quot;Спортивная команда&quot;:...


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

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

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