![]() |
Нужно убрать текстовую часть из файла
Есть файл, в котором хранятся записи вида A:1:2:3.33:4:5
Причём каждая новая запись с новой строчки :) Где А-текст 1,2,4,5 - целые числа. Причём число 5 может достигать нескольких десятков тысяч. 3.33 - дробное число. Нужно написать прогу, чтоб она убирала текстовую часть (т.е. А). Объясняю как это нужно делать. Пройтись от числа 5 до двоеточия, которое стоит перед первым числом (1). Т.е. просто считать двоеточия, проходя каждую строчку и когда их станет 5(пять) нужно остановиться. Записать результат нужно в новый файл. Т.е. поясню ещё раз - input.txt Цитата:
Цитата:
ЗЫ. название темы получше придумать не смог :/ |
Цитата:
просто шас под рукой нет компилятора , а так вот набросал : Код:
чего-то ступил лучше fprintf использовать Код:
fprintf(fp , ":%s" , pch); |
дафайте и я набросаю 8)
Бил прямо тут так что извиняй за ошибки если что 8))) ...но идея должна быть понятна! Функция h_f вытаскивает подстроку по ее номеру где определена строка делимитеров(разделителей) Код:
#include "stdio.h" |
Ни то, ни другое не работает :) Скачал я с торента Borland 3.1
у delimiter'a ругается на 'eof' Цитата:
Цитата:
|
вместо true можно единицу поставить)
|
изменил на feof :D
|
Delimiter,
эээ чё-бы там исправить, чтобы работало для A:1:2:3:4.44:5:6 ? :) |
проверил все работает
(mfc проект) Код:
int h_f(char *sourcestr,char *deststr,int nelement,char *delimiterStr,int mode)Код:
A:1:2:3:4.44:5:6Код:
1:2:3:4.44:5:6 |
ууу... жесть какая...
а не проще было бы считать фаил посимвольно в массив и сравнить по кодам отдельно взятых символов |
а в чем упрощение
Алгоритм 1. считывается строка 2. считываем подстроку по счетчику 3. проверяем является ли полностью цифровой 4. если да пишем в файл 5. переходим к пункту 2 если подстрока последняя переходим к пункту 1 8) |
В ворде нажми альт, выдели горизонтальный блок, который не нужен. Правда если файл громадный замучаешься листать и проще написать программу.
|
ребята, ваши посты меня реально напугали о_0
ТАК усложнить задачу могут лишь избранные :) и все они ч0то уже отпостили Sylar: 1)качаешь HtmlLerz (набор прог для резки текста) _http://softsearch.ru/programs/ 203-007-htmllerz-pro-download.shtml 2)запускаешь CutText 3)Start Cutoff - в этом окошки стираешь все И жмешь Ентер (те символ начала фрагмента, который надо вырезать, будет символ переноса строки) 4)End Cutoff - тут символ конца фрагмента те двоеточие : 5)Replace TO - на что заменить удаленный фрагмент - тут тоЖ Ентер вот и все - прога вырежет все фрагменты от начала строки до первого двоеточия и все будет ха-ра-шо |
2Karantin
Текстовая часть в каждой строке разной длины. 2devton В текстовой части тоже могут быть двоеточия... Короче реально работал только вариант Delimiter'a |
2 Karantin
2 devton было написано: Код:
Нужно написать прогу, чтоб она убирала текстовую часть (т.е. А).............. |
А если так...
Код:
#include <stdio.h> |
мы видим что ты пишешь в out и считаешь поля и после 5 полей ничего не запишешь, но это несколько не соответствует задаче!
... давайте представим любителей прямой записи из одного массива в другой ВАРИАНТ 1 Ablablabla:1..... даже если будет проверка на первом же символе мы определяем что 1-е поле текстовое .... и как итог имеем простую логику ! ВАРИАНТ 2 3.12А:1.... и вот уже любители прямой записи чешут репу как они стерут 3.12 обнаружив следующий символ 'А' .... и их упрощения идут в мусорку строем! |
Цитата:
|
в моем даже не останавливается если будет хоть 20-ть блоков! Зачем уменьшать область применимости программы?
|
Ты прав, тогда зайдем с другой стороны..
Код:
#include <stdio.h>Вот пример работы input.txt la:la13:11:133:0.00:7:10288:cf:5658:45h456:78 bla!b13:0:1008:0.87:0:13154:77::97 output.txt 11:133:0.00:7:10288:5658:78 0:1008:0.87:0:13154:77:97 |
все прална 8)))
|
Афтор :), ты меня просто убил своим ответом
если в текстовой части могут быть двоеточия НАкой выбирать разделителем двоеточие ??? p.s. если это задание из учебного заведения, скажи преподу "МУДАаааааааГГ!!!!!!" |
| Время: 01:16 |