47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
1

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

24.01.2009, 18:52. Показов 1735. Ответов 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 байт, 34 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2009, 18:52
Ответы с готовыми решениями:

Редактирование строки в C++
Не могу понять как правильно добавить символ в конец строки ,вот часть кода , в чем проблема?...

Редактирование строки
Здравствуйте, ребят. Не буду вас мучить сегодня. Только один вопрос: У меня есть очень длинная...

Редактирование массива строки
Помогите написать функцию которая удалит(или просто не выведет в консоль)одинаковые строки....

Файлы: редактирование определенной строки
как мне сделать редактирования файла? допустим вместо строки 2 которую я ввел рание записать что-то...

3
Почетный модератор
7385 / 2629 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
25.01.2009, 01:40 2
Глазами пробежался. Не въехал. По поводу того, как идти в обратном направлении, тебе поможет fseek.
0
47 / 47 / 3
Регистрация: 07.01.2009
Сообщений: 297
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.
Проблема в том,что строки могут быть пустыми в середине текста и может быть много пробелов между словами.(на примере этого не видно,т.к. форум автоматически убирает нунужные пробелы и
0
4857 / 3278 / 467
Регистрация: 10.12.2008
Сообщений: 10,570
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;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2009, 12:51

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

Редактирование строки. В строку дозаписывается мусор
Есть программа, которая заменяет в строке &quot;ph&quot; на &quot;f&quot;, а &quot;ed&quot; на &quot;ing&quot;. Программа работает. Но...

Работа с файлами. Редактирование только 1 строки
Добрый день как можно редактировать только 1 строку? Есть функция: const char *...

Запрет редактирование строки
Есть DBGridEh. Можно ли запретить редактирование какой-либо строки? Есть свойство ReadOnly но оно...

Добавление, редактирование и удаление строки в БД
Не могу осуществить данные процедуры - удаление,редактирование,добавление. В builder C++ новичок. ...

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


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

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

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