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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 72, средняя оценка - 4.60
NewMax
2 / 2 / 0
Регистрация: 12.05.2009
Сообщений: 9
#1

Удаление символов из файла - C++

31.05.2009, 06:28. Просмотров 9752. Ответов 13

Как удалить символы из открытого для чтения файла при помощи только функций fgetc и fputc? Может написать кто код для, например, удаления первых пяти символов?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.05.2009, 06:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Удаление символов из файла (C++):

Удаление строк (символов) из файла - C++
Подскажите, пожалуйста как реализовать программно (1) исключение из исходного текстового файла подстрок, являющихся цепочками заданного...

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

Удаление символов - C++
Скажите, как удалить все символы в строке после 3-его

Удаление символов из строки - C++
Дана строка символов. Группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя, будем называть...

Удаление лишних символов - C++
Имеется файл txt.txt в котором 50 000 строк, просто физически это обработать тяжело. Нужно удалить все эти знаки ( ) | и 0. (Левая...

Удаление повторяющихся символов - C++
из последовательности символов удалить самую большую из одинаковых элементов допустим есть строка aabbbbzcc, на выходе aazcc ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
31.05.2009, 06:35 #2
Цитата Сообщение от NewMax
Как удалить символы из открытого для чтения файла
никак, чтобы редактировать файл его нужно открыть для записи (можно комбинировать через r+)

можно перевести позицию файла на шестой символ от начала и читать, но символы в файле всё равно останутся

а для перевода нужно впустую прочитать пять символов (если только fgetc можно юзать), можно fscanf юзать, вообще fseek есть
Код
fscanf(ifp, "%*5c");
0
Evg
Эксперт CАвтор FAQ
17802 / 6008 / 387
Регистрация: 30.03.2009
Сообщений: 16,513
Записей в блоге: 26
31.05.2009, 14:44 #3
Из файла символы удалять нельзя. Такие операции делаются через второй файл. Читаешь данные из первого файда, записываешь во второй, пропуская ненужные. В конце закрываешь оба файла и второй переименовываешь в первый

Хотя судя по постановке вопроса - тебе нужно не удалить а просто пропустить. В этом случае нужно просто 5 раз вызвать fgetc
0
NewMax
2 / 2 / 0
Регистрация: 12.05.2009
Сообщений: 9
31.05.2009, 19:42  [ТС] #4
Сейчас сформулирую поконкретнее:
у меня есть некий текстовый файл со словами, мне надо удалить какое-нибудь слово без использования массивов и дополнительных файлов.
Я сделал такую штуку: переставлял в нужном мне месте символы, затирая тем самым слово, а символы из слова заменял пробелами и пихал в конец файла
0
Evg
Эксперт CАвтор FAQ
17802 / 6008 / 387
Регистрация: 30.03.2009
Сообщений: 16,513
Записей в блоге: 26
31.05.2009, 19:43 #5
Удалить слово, а дальше что? Результат обратно должен быть записан в этот файл или просто выведен на экран?
0
NewMax
2 / 2 / 0
Регистрация: 12.05.2009
Сообщений: 9
31.05.2009, 21:00  [ТС] #6
всё должно быть записано в этот же файл
0
Evg
Эксперт CАвтор FAQ
17802 / 6008 / 387
Регистрация: 30.03.2009
Сообщений: 16,513
Записей в блоге: 26
31.05.2009, 23:31 #7
Ну значит делай то, что в посте #3 написано
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
01.06.2009, 04:27 #8
Цитата Сообщение от NewMax
Я сделал такую штуку: переставлял в нужном мне месте символы, затирая тем самым слово, а символы из слова заменял пробелами и пихал в конец файла
но это не очень много меняет, потому что в файле появляются пробелы (то есть он сохраняет свою длину)
есть функция tmpfile(), но она будет использовать дополнительный файл
1
NewMax
2 / 2 / 0
Регистрация: 12.05.2009
Сообщений: 9
01.06.2009, 16:22  [ТС] #9
спасибо за помощь
0
feliks2009
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
14.11.2009, 04:00 #10
Цитата Сообщение от NewMax Посмотреть сообщение
спасибо за помощь
А можно полный листинг программы, пожалуйста???=)))
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.11.2009, 13:56 #11
удаляет несколько первых символов в файле
1
Вложения
Тип файла: zip remove_first_file.zip (440 байт, 171 просмотров)
feliks2009
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
14.11.2009, 14:01 #12
Цитата Сообщение от feliks2009 Посмотреть сообщение
А можно полный листинг программы, пожалуйста???=)))
а без использования массивов и дополнительных файлов как сделать??))
просто такое условие в задаче(((
0
accept
4822 / 3243 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
14.11.2009, 14:21 #13
размер файла никак не изменишь, только перезатереть; чтобы сохранить то, что там есть, нужно это где-то хранить
ну, системный вызов может быть можно заюзать какой-нибудь, но это не стандарт
0
feliks2009
0 / 0 / 0
Регистрация: 14.11.2009
Сообщений: 7
14.11.2009, 14:26 #14
Цитата Сообщение от accept Посмотреть сообщение
размер файла никак не изменишь, только перезатереть; чтобы сохранить то, что там есть, нужно это где-то хранить
ну, системный вызов может быть можно заюзать какой-нибудь, но это не стандарт
ну как тогда быть, а то я уже не знаю
вот условие исходное "В ИСХОДНОМ БИНАРНОМ ФАЙЛЕ (СОЗДАТЬ И ВВЕСТИ) УДАЛИТЬ ВСЕ ПРОБЕЛЫ.
ДОПОЛНИТЕЛЬНЫХ МАССИВОВ И ФАЙЛОВ НЕ ИСПОЛЬЗОВАТЬ"

я уже запутался, помогите!)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2009, 14:26
Привет! Вот еще темы с ответами:

Удаление повторяющихся символов - C++
Есть строка символов, я её обрабатываю, удаляю слово с повторяющимися символами,дело в том что заодно удаляются и цифровые слова, 55 44 33...

Удаление символов из строки - C++
Условие: Даны натуральное число N, символы s1,...,sn. Удалить из данной последовательности все группы букв вида abcd. Я начинающий...

Удаление символов из строки - C++
#include "stdafx.h" #include <iostream> #include <conio.h> #include <string> using namespace std; int main() { string...

Удаление повторяющихся символов - C++
Задача банальна. Удалить повторяющиеся символы в строке. В интернете шарил, предложенные варианты слишком сложные и непонятные. Язык си,...


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

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

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