|
0 / 0 / 0
Регистрация: 12.12.2008
Сообщений: 26
|
||||||
Работа со строками11.12.2008, 17:20. Показов 6004. Ответов 37
Метки нет (Все метки)
Товарищи, такая вот проблема. Есть задача. Прочитать строки из файла, а потом записать их следующим образом. Первую оставить, вторую -удалить, на месте её - пустая строка. Третью - оставить, на месте следующих двух - две пустые строки. Шестую - оставить, затем три пустые строки.
При этом все, даже пустые, строки должны быть пронумированы. Сам написал такой вот бред, но думаю можно проще и правильнее.
0
|
||||||
| 11.12.2008, 17:20 | |
|
Ответы с готовыми решениями:
37
Работа со строками, заполнить компоненты строками из файла
|
|
0 / 0 / 0
Регистрация: 12.12.2008
Сообщений: 26
|
|
| 13.12.2008, 13:49 [ТС] | |
|
accept, дык когда был /n, то в получившемся файле после каждой неудаленной строки оставалось по три непечатных пустых прямоугольника. Убрал - и их не стало.
FOLKEN, вот в файлкопи, которая описана, у тебя в коде, всего один аргумент. Да и судя по её описанию она копирует из файла в этот же файл. А надо, насколько я вижу по твоему коду, скопировать из tfile в ffile. Для этого же надо 2 аргумента в описании, разве не так? Да и само описание по моему должно быть несколько другое. Фактически прога работает в точности так, как надо, только нужно чтобы писалось в тот же файл, а не создавалось еще одного.
0
|
|
|
22 / 21 / 6
Регистрация: 03.12.2008
Сообщений: 85
|
|||||||||||
| 13.12.2008, 19:20 | |||||||||||
|
функция - метод класса. смотри описание
1
|
|||||||||||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||||||||||||||||||||||||||||||||
| 13.12.2008, 23:49 | ||||||||||||||||||||||||||||||||||||
|
этот участок можно заменить если компилятор не тянет ?:
в lcc который я показывал тут, скомпилировалось всё нормально и в файл она нормально всё записала из файла
выяснил что происходит, короче bc3.1 поддерживает оператор ?:, но
потому сработает вариант
1
|
||||||||||||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 12.12.2008
Сообщений: 26
|
||||||
| 14.12.2008, 04:44 [ТС] | ||||||
|
FOLKEN, в общем вставил я в мейн оную функцию.
Получилось так
0
|
||||||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
| 14.12.2008, 17:12 | |
|
можно переделать
tmpfile() - стандартная функция возвращает указатель на темповый поток, в который можно писать как в файл, если закрыть поток все данные из него удаляются, я искал файл этот не нашёл ни в папке программы ни в темповой директории системы, т.е. с правами всё ровно иначе темповый файл придётся ещё удалять, а судя по вашей системе это придётся вставлять метод иначе операция удаления не будет вписываться в общий фон (работа с файлами должна осуществляться в одном классе) если будешь делать там надо добавить метод открытия не файла функцией fopen а темпового файла функцией tmpfile() таким образом можно будет открыть как обычный файл из одного класса, так и темповый файл из него же и работать с уже открытым потоком одинаково в обоих случаях Добавлено через 6 часов 2 минуты 4 секунды #define - это макроопределение, можно определять символические константы, а можно определять макросы #define IN 1 заменит в исходнике ещё перед компиляцией его в объектник все слова IN на еденицы #define sum(a, b) (a) + (b) заменит в исходнике все вызовы макроса sum(2, 5) на 2+5, вычислит и оставит 7
0
|
|
|
0 / 0 / 0
Регистрация: 12.12.2008
Сообщений: 26
|
|
| 14.12.2008, 18:03 [ТС] | |
|
Я тут решил пойти нерациональным, но простым и понятным мне способом. Грубо говоря, у меня после проги, остается два файла. Первый - исходник. Второй - с результатом. Я просто еще раз открою файл с резалтом, и скопирую его содержимое построчно сначала в чаровскую переменную, потом открою исходник, и удалив его содержимое, скопирую туда содержание чаровской переменной.
Внимание вопрос - как после этого удалить файл, в котором лежали результаты?
0
|
|
|
22 / 21 / 6
Регистрация: 03.12.2008
Сообщений: 85
|
|
| 14.12.2008, 18:35 | |
|
удалить файл можно функциями remove, DeleteFile. Заметьте, этим функциям надо передавать в качестве параметра сооответственно const char* (для _wremove - const wchar_t *) и LPCTSTR соответственно. Уж этот вопрос можно было загуглить, блин.
0
|
|
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
| 15.12.2008, 01:25 | ||||||
(удаляет исходный файл когда темповый сохранён на диске, потом темповый переименовывает в исходный) если на папке запрещена запись прога остановится ещё на создании темпового файла на диске (короче прога будет работать не в каждой папке) набери cacls /? там будет хелп как поменять права на rw, создай папку, туда скопируй прогу, потом права у папки оставь только r и увидишь результат
0
|
||||||
|
0 / 0 / 0
Регистрация: 12.12.2008
Сообщений: 26
|
|||||||||||
| 15.12.2008, 16:23 [ТС] | |||||||||||
|
Вопросик по синтаксису удаления.
Допустим мне надо удалить файл "2.txt", лежащий в паке проекта. Как это будет выглядеть?
И еще. Хотел скопировать из 2.тхт в 1.тхт, затем 2.тхт удалить. Приписал к имеющимуся коду следующее:
Кликните здесь для просмотра всего текста
D:\Program Files\Microsoft Visual Studio\MyProjects\123\123.cpp(76) : error C2664: 'class istream &__thiscall istream::getline(char *,int,char)' : cannot convert parameter 3 from 'char [2]' to 'char'
This conversion requires a reinterpret_cast, a C-style cast or function-style cast D:\Program Files\Microsoft Visual Studio\MyProjects\123\123.cpp(77) : error C2065: 'strlen' : undeclared identifier D:\Program Files\Microsoft Visual Studio\MyProjects\123\123.cpp(80) : error C2440: '=' : cannot convert from 'char [2]' to 'char' This conversion requires a reinterpret_cast, a C-style cast or function-style cast
0
|
|||||||||||
|
0 / 0 / 0
Регистрация: 12.12.2008
Сообщений: 26
|
||||||
| 16.12.2008, 04:08 [ТС] | ||||||
|
Дело в том, что при использовании любого из кодов, предложенных acceptoм, вместо пустых строк в блокноте выводятся просто пустые прямоугольники.
Если не сложно, можете доработать оный код так, чтобы он также копировал инфу из файла 2.тхт, в 1.тхт, а затем 2.тхт удалял? То есть чтобы и до работы проги, и после ее в паке проекта был лишь один текстовый файл. Код:
0
|
||||||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||||||||||||
| 16.12.2008, 06:40 | |||||||||||||||||||||
я смотрел во всех блокнотах которые у меня есть в виндовс и пропустил обычный стандартный даже в консоли делал type file.txt и всё выводит там без квадратов насчёт подходящего кода, тебе всё равно придётся делать rewind и remove потом я чо-то пригляделся что тут
потом
остальное вроде если работает то ничо не менять в итоге у тебя есть файл, создаётся темповый файл где-то там неважно, потом к нему применяются методы которые годятся для любого файла (их надо описать чтобы они работали) и так может тебе поставят зачёт
0
|
|||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 12.12.2008
Сообщений: 26
|
|
| 16.12.2008, 09:34 [ТС] | |
|
Accept, вот теперь квадратов нет, как "\r" поставил, перестали выводится.
Мне тут сказали, что преподу можно только екзешник с тектовым файлом принести и все. Так что может и без классов проканает. А из экзешника вообще как то можно сам код достать?
0
|
|
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
| 16.12.2008, 12:27 | |
|
он может определить на чём написан был код на C или C++ туда добавляется стандартная библиотека у меня для Hello, world! различаются экзешники, но если он так задал, значит ему пофигу, значит ставит просто так, гасить будет летом
0
|
|
|
0 / 0 / 0
Регистрация: 12.12.2008
Сообщений: 26
|
||||||||||||||||
| 19.12.2008, 10:43 [ТС] | ||||||||||||||||
|
Еще один маленькие вопросы нарисовались.
И в данной записи, зачем файловые переменные проверяются на то, не равны ли они NULL? И зачем после этого возвращаются 1 и 2?
0
|
||||||||||||||||
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
| 19.12.2008, 12:09 | |
|
%03d
%3d вставить десятичное число в поле минимум из трёх символов %03d вставить десятичное число в поле минимум из трёх символов, а если оно короче то поставить не пробелы а нули fopen(fname, "rb") первое имя файла второе режим открытия r - read w - write a - append (это write только с присоединением к файлу, а не затиранием) b - binary (двоичный режим, работает не с набором строк, рассматривая символы конца строки, а с набором байтов, рассматривая символы (или символ) конца строки как просто символ в потоке остальных символов; для виндовс необходимо ставить иначе могут быть глюки какие-то) функция fopen возвращает NULL в случае ошибки, если она не сможет найти файл, она не сможет его открыть, работать дальше не с чем, программа выходит а код завершения сообщает в систему: так принято что система ноль считает успешным завершением программы, потому все программы возвращают ноль в качестве успешного выполнения и не ноль в качестве неуспешного) echo %errorlevel% после любой программы набери и выведется код завершения последней программы т.к. успешное завершение успешно всегда одинаково а ошибки бывают разные то успех только ноль, а ошибки нумеруются по мере поступления, в идеале на каждую ошибку свой код ещё делают сообщения для пользователя, коды завершения нужны главным образом процессам (например когда включаешь прогу в скрипт (в виндовс пакетные файлы .bat), то прямо в скрипте можно узнать отработала ли прога или завершилась с ошибками, таким образом можно создавать сложные скрипты, опирающиеся на кучу разных программ, если они все правильно возвращают коды выполнения, то скрипт будет работать однозначно и хорошо информировать пользователя об этапах своей работы)
1
|
|
|
0 / 1 / 0
Регистрация: 04.12.2008
Сообщений: 63
|
|
| 21.12.2008, 12:05 | |
|
Может ктота подскажет как сделать так чтоб можна было сохранять даные в файл, имя файла задаёт пользователь, а потом чтоб можна было с етого файла прочитать ети даные. ТОесть пользователь вводит под каким именем сохр, и с какого файла прочитать даные, вот так вот!
0
|
|
|
4866 / 3287 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|||||||||||||||||||||
| 22.12.2008, 00:35 | |||||||||||||||||||||
Добавлено через 2 минуты 6 секунд
0
|
|||||||||||||||||||||
| 22.12.2008, 00:35 | |
|
Помогаю со студенческими работами здесь
38
Работа со строками Работа со строками
Работа со строками Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов,
содержащихся в реализации модуля. По-умолчанию все члены модуля доступны:
module Foo
let x = 10
let boo () = printfn "boo"
. . .
|
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции.
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible". . .
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|