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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.75
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
#1

Редактирование строки - C++

24.01.2009, 18:52. Просмотров 1087. Ответов 3
Метки нет (Все метки)

Нужно редактировать текстовый файл таким образом:
у нас есть определенное кол-во символов,которое может быть в строке(можно определить define'ом,пусть будет N)
и нужно сделать так,чтобы в строке в файле(уже в получившемся) было не более N символов,причем если слово обрывается,то его нужно поместить в следующую строку без пробела(может быть в файле много пробелов).
Кодировка может включать русские или английские символы(Как тогда с кодом EOF,который совпадает с кодом "я"?)
Напр.,исходный файл такой(N = 16)

(см. во вложениях)

А должен получиться такой файл(при N = 15):


********************
Литература,
музыка,
изобразительное
искусство
только в том
случае имеют
право на
существование,
если
способствуют
нравственному
perfection
человека.
********************

Вообще,в задаче требуется,чтобы N = 54.Просто придумать такой пример неохота.
И имена файлов через командную строку должны передаваться(sourc file и destination file)


Алгоритм черновой плавает в голове: мы должны сначала идти по файлу,и если число символов нацело делится на N,то идем в обратном порядке,пока не встретится пробел,затем пока не встретится какой-л. др. символ(так мы все лишние пробелы уберем),затем fprintf или fwrite записываем '\n',предварительно проверив,достигается ли начало строки.
Только не знаю ,как идти в обратном порядке в файле(как это организовать)

p.s. ************ - так я отметил для удобства границы файла ))
Вложения
Тип файла: txt Текстовый документ.txt (193 байт, 33 просмотров)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2009, 18:52     Редактирование строки
Посмотрите здесь:

Редактирование строки - C++
Здравствуйте, ребят. Не буду вас мучить сегодня. Только один вопрос: У меня есть очень длинная строка std::string. Мне нужна возможность...

Удаление и редактирование определённой строки - C++
Задание- словарь синонимов, в нём нужно осуществить удаление и редактирование определённой строки в файле в m1 находит синоним, в m2 -...

Редактирование строки. В строку дозаписывается мусор - C++
Есть программа, которая заменяет в строке "ph" на "f", а "ed" на "ing". Программа работает. Но если выводить, вконце вписывает некое...

Редактирование файлов - C++
Надо спомощю структур и файлов реализовать функцию редактирование елемента файла. ввести имя елемента а потом переписать его имя и другие...

Редактирование записей - C++
Здравствуйте. Возник вопрос. Есть программа в которую нужно добавлять записи. При необходимости нужно редактировать уже добавленую запись. ...

редактирование edit - C++
Всем привет, подскажите пожалуйста как можно сделать так чтобы edit, так же как и калькуляторе можно было вводить только одну запятую, и...

Редактирование файлов - C++
Здравствуйте) Уж простите, что так с файлами задалбываю, но решил понять эту тему хорошенько) Сейчас хочу задать чисто теоретический...

Редактирование DLL - C++
Вот из-за этого ll-файла постоянно вылезает окошко с надписью mde by sst311212 и кнопкой ок. Может быть кто-нибудь найдет решение.

Редактирование кода - C++
Есть код программы: /* Задача: Характеристикой столбца матрицы назовем сумму его отрицательных элементов, имеющих нечетные...

Редактирование dll - C++
Здравствуйте. Если честно не знаю в какой раздел обратиться. Решил к вам. Для одной из программ (ГИС Панорама) можно устанавливать...

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

C++ и редактирование PDF - C++
Здравствуйте! Прошу знающих людей подсказать, можно ли средствами C++ ( с использованием каких-либо библиотек) открыть внутреннюю структуру...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6474 / 2249 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
25.01.2009, 01:40     Редактирование строки #2
Глазами пробежался. Не въехал. По поводу того, как идти в обратном направлении, тебе поможет fseek.
Ёрик
46 / 46 / 2
Регистрация: 07.01.2009
Сообщений: 298
25.01.2009, 11:18  [ТС]     Редактирование строки #3
Тут N равно в обоих случаях 16,просто опечатка.Попробую понятней объяснить:
нужно после определенного кол-ва символов(их коло-во задается в начале программы) записывать в файл '\n' .причем делать это так,чтобы слова не обравались(а если они обрываются,то '\n' записывать перед этим словом)
Может быть,пример не понятен?
Есть у нас файл.В файле такой хаос:

******************************************************************
In earlier centuries the
Antarctic was thought

to be a huge
continent.
******************************************************************


Напр,в программе кол-во символов,после которых нужно записывать перевод строки - 15
(N = 15,т.е. максимальная длина строки).В итоге получается такой файл:

*************
In earlier
centuries the
Antarctic was
thought to be a
huge continent.
*************


In earlier /* здесь 2 слова + пробел между ними = 10 символов (после слова ealier не должно быть пробела).Т.к. слово centuries не помещается в первую строку (10 символов в 1-ой строке ,а слово centuries - 9 символов, 10 + 9 > 15, поэтому делаем перевод строки перед словом centuries */
centuries the /* здесь 13 символов, и Antarctic уже не помещается в эту строку,следовательно,перед ним записываем перевод строки и т.д.,но не забываем, что пробел , который остался между "the" и "Antarctic" убирается.*/
Antarctic was
thought to be a
huge continent.
Проблема в том,что строки могут быть пустыми в середине текста и может быть много пробелов между словами.(на примере этого не видно,т.к. форум автоматически убирает нунужные пробелы и
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.01.2009, 12:51     Редактирование строки #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
#include <stdio.h>
 
/* как отличить 'я' от EOF */
main()
{
    int c;
    
    for (c = '\0'; c != EOF; ) {
        c = fgetc(stdin);
        if (c != '\n')
            printf("%d\n", c);
    }
    return 0;
}
Yandex
Объявления
25.01.2009, 12:51     Редактирование строки
Ответ Создать тему
Опции темы

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