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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.86
SkyFlyStaR
1 / 1 / 0
Регистрация: 16.10.2011
Сообщений: 69
#1

Удалить пустые строки из файла - C++

15.01.2012, 19:57. Просмотров 2773. Ответов 20
Метки нет (Все метки)

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

Удалить все пустые строки из файла - C++
Помогите пожалуйста написать функцию на Visual C++ : удалить все пропущенные (пустые) строки файла Спасибо

Удалить в текстовом файле все пустые строки - C++
Задан текстовый файл, удалить в нем все пустые строки. Выдать сообщение, что строки удалены или таковых строк не имеется.

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

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

Удалить из i-ой строки файла i первых символов - C++
Дан текстовый файл f, содержащий 20 строк. Нужно удалить из i-ой строки i первых символов. Вот что написал: #include <fstream>; ...

Удалить из файла последние три строки. - C++
lIUDI POMAGITE POJALUIUSTA REWIT ETU ZADACHU!!!! В теме должна быть только одна задача! Text21º. Дан текстовый файл, содержащий более...

20
megastriker
49 / 49 / 18
Регистрация: 05.12.2010
Сообщений: 261
15.01.2012, 20:19 #2
тоже интересует, как можно произвести удаление строк.

по идее, можно конечно через цикл организовать сдвиг всех файлов на -2 (\n), если мы видим пустую строку.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.01.2012, 20:22 #3
Переписываете из файла А в файл Б без пустых строк. Файл А удаляете. Файл Б переименовываете.
Второй вариант: использовать fseek. Но он сложнее, поэтому используйте первый.
1
-=ЮрА=-
Заблокирован
Автор FAQ
15.01.2012, 20:22 #4
Цитата Сообщение от SkyFlyStaR Посмотреть сообщение
Надо именно удалить (а не пропустить или не перенести текст в новый файл без пустых строк) пустые строки из текстового файла, при условии, что текстовый файл уже существует и в нем встречаются пустые строчки
- кто мешает переписать данные из файла во временный файл, после функцией remove удалить исходный файл данных, а временный переименовать именем исходного функцией rename. Обе функции включены в stdio.h
Крооме того рекомендую посмотреть этот пост и топик в целом
Удаление данных из файла
1
megastriker
49 / 49 / 18
Регистрация: 05.12.2010
Сообщений: 261
15.01.2012, 20:55 #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- кто мешает переписать данные из файла во временный файл, после функцией remove удалить исходный файл данных, а временный переименовать именем исходного функцией rename. Обе функции включены в stdio.h
Крооме того рекомендую посмотреть этот пост и топик в целом
Удаление данных из файла
дополнительный файл использовать нельзя, все делать в исходном файле.
можно открыть как файловый дескриптор (разницы особой нет) и перемещать все символы, что после пустой строки через lseek(file, -2, SEEK_CUR). Загвоздка в том что останется (количество пустых строк)*2 символов в конце файла, а как их удалить...
можно как нибудь EOF "перенести" в другое место?
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
15.01.2012, 21:09 #6
Цитата Сообщение от megastriker Посмотреть сообщение
можно как нибудь EOF "перенести" в другое место?
C
1
putc ( EOF , pFile);
Так не подходит?
1
megastriker
49 / 49 / 18
Регистрация: 05.12.2010
Сообщений: 261
15.01.2012, 21:19 #7
Цитата Сообщение от go Посмотреть сообщение
C
1
putc ( EOF , pFile);
Так не подходит?
так не работает (по крайней мере у меня).
0
OstapBender
583 / 522 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
15.01.2012, 21:34 #8
megastriker, попытки есть?
0
megastriker
49 / 49 / 18
Регистрация: 05.12.2010
Сообщений: 261
15.01.2012, 23:33 #9
Цитата Сообщение от OstapBender Посмотреть сообщение
megastriker, попытки есть?
мне бы узнать, как можно затереть последние символы, а реализовать мой алгоритм не проблема.
пробовал сместить конец файла как предлагали, не выходит.

C
1
2
3
4
5
6
7
8
9
10
11
12
#include <stdio.h>
#include <string.h>
 
int
main(void)
{
    FILE *file;
    file = fopen("1.txt", "r+");
    fseek(file, 3, 0);
    putc(EOF, file);
    return 0;
}
не работает, вставляет значок евро в конце файла

Добавлено через 1 час 55 минут
в инете по этому поводу ничего не говорится
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
16.01.2012, 11:59 #10
Цитата Сообщение от megastriker Посмотреть сообщение
не работает, вставляет значок евро в конце файла
Ну правильно, EOF == -1, переводим в unsigned char - получаем результат
Попробуйте 1A
C
1
putc ( 26 , pFile);
0
megastriker
49 / 49 / 18
Регистрация: 05.12.2010
Сообщений: 261
16.01.2012, 12:34 #11
Цитата Сообщение от go Посмотреть сообщение
Ну правильно, EOF == -1, переводим в unsigned char - получаем результат
Попробуйте 1A
C
1
putc ( 26 , pFile);
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
 
int 
main (int argc, char **argv) 
{
    FILE *file;
    file = fopen("1.txt", "r+");
    fseek(file, 4, SEEK_SET);
    char c = fgetc(file);
    printf("%c\n", c);
    putc (26 , file);
    return 0;
}
4 символ печате, eof не передвигает, файл как был так и остается.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
16.01.2012, 12:40 #12
Цитата Сообщение от megastriker Посмотреть сообщение
4 символ печате, eof не передвигает, файл как был так и остается.
У меня работает. А Вы как файл смотрите? Визуально они будут (надо с доп. файлом работать), но feof (f) вернет единицу, соответственно дальше читать не будет все любые функции.
0
OstapBender
583 / 522 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
16.01.2012, 13:28 #13
ребят по-моему вы не в том направлении двигаетесь. EOF это просто признак конца файла, а не реально существующий символ в файле. это как признак того что чтение прошло неуспешно. ИМХО.
0
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
16.01.2012, 13:29 #14

Не по теме:

Цитата Сообщение от OstapBender Посмотреть сообщение
ребят по-моему вы не в том направлении двигаетесь.
А По-моему Вы топик не весь прочитали. Как делать уже сказано, вносите коррективы Удалить пустые строки из файла



Цитата Сообщение от OstapBender Посмотреть сообщение
EOF это просто признак конца файла,
Не совсем так.
0
OstapBender
583 / 522 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
16.01.2012, 14:01 #15
Ну способ занятный не спорю, самое смешное что работает. Тащемто автор сам задал такой вопрос так что оно ему виднее, наверное.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2012, 14:01
Привет! Вот еще темы с ответами:

Удалить из каждой строки файла первые K символов - C++
Всем привет! Вообщем есть задачка Дано целое число K и текстовый файл. Удалить из каждой строки файла первые K символов (если длина...

Удалить строки из одного файла и записать их в другой - C++
имеется текстовый файл F1.txt. В нем, скажем 10 строк, разделенный знаком каретки(снос строки). пример: 0а 1б 2в 3г 4д ...

Для каждой строки файла удалить короткое слово - C++
Для каждой строки файла удалить короткое слово. Результат записать в файл. FILE *f1,*f2; f1=fopen(&quot;F1.txt&quot;,&quot;rt&quot;); ...

Определить пустые строки - C++
В условии прописано: Пустые строки не печатать. Пустыми строками считать строки, в которых либо нет символов, либо они содержат только...


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

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

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