1 | ||||||
[C++] Работа с файлами17.06.2010, 21:09. Показов 33245. Ответов 74
Метки нет (Все метки)
Задача: Есть файлы, которые надо обработать:
1.просканировать директории на наличие файлов расширения *.TXT 2.сохранять список путей к файлам в booklist.txt (для дальнейшей работы) 3.вывести booklist.txt на экран Добавлено через 41 минуту пытался найти похожие или хоть какие-то программы работы с файлами нашел вот эту работает с файлами через аргумент и выводит дважды содержание файла:
------------------------------------ Посоветуйте что можно сделать, я в С++ только начал
1
|
17.06.2010, 21:09 | |
Ответы с готовыми решениями:
74
работа с файлами работа с файлами Работа с файлами Работа с файлами |
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
|||||||||||
21.06.2010, 10:12 | 41 | ||||||||||
1
|
21.06.2010, 20:35 [ТС] | 42 |
Хотел написать программу удаления коментариев в С++ исходных файлах.
построчных // коментарий многострочных /* коментарий */ у меня тоже возник вопрос какие есть функции для работы со строками? как вообще лучше работать с файлом какие типы (char я так понимаю) при этом используются? я впринципе представляю себе алгоритм: 1.открыть файл в аргументах для функции передавать 1-имя файла, 2-строку которую изменить (// и /*), 3-строку на что изменить(если пусто тоесть удалить) 2.прочитать его в переменную (как лучше читать по строчно или нет? если большой файл то как быть?) 3.найти в файле совпадения функция поиска по файлу при нахождении 2строки (// и /*) искать конец (endline или */) и возвращать номера символов первого найденного и последнего (/* */) и после удалить их
0
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
||||||
21.06.2010, 23:05 | 43 | |||||
Файл лучше обрабатывать посимвольно
Evg же довольно подробно описал алгоритм https://www.cyberforum.ru/post165944.html Добавлено через 1 час 29 минут На ночь глядя мой воспаленный мозг родил такой код Он не безупречен.
1
|
22.06.2010, 00:03 [ТС] | 44 |
Хочешь разобраться в коде - попробуй его откоментируй. пробовал откоментировать до цепочки if условий дальше немного не понятно что в себе хранят переменные f_c, f_cplus, f_com
непонятно с какими аргументами можно работать, тоесть что передается аргументами?? а так впринципе код работает на отлично, но оставляет дыры на многострочных коментариях в файле nocom.cpp
0
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
|
22.06.2010, 00:08 | 45 |
f_c, f_cplus, f_com это флаги
f_com - флаг комментария f_c - флак комментария в стиле Си f_cplus - флаг комментария в стиле С++
1
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
|
22.06.2010, 12:22 | 47 |
Если придумаешь как, почему бы и нет.)
1
|
22.06.2010, 12:32 [ТС] | 48 |
Попробовал скомпилированной программой обработать тот же исходник отрезало пол файла заголовков... почему?
как можно изменить программу чтобы она реагировала на звездочку как на много символов после start /* и */ до end соотвественно, а то с флагами немного не понятно.
0
|
22.06.2010, 12:50 [ТС] | 49 |
Я кажется догадываюсь... оно читает заголовки cpp и пытается их выполнить
Программу понял так: если встречается в буфере коментарии то оно возвращает 0 до тех пор пока не встречает конец коментариев. а как бы сделать так чтобы оно не возвращало при удалении несколько строчек многострочного коментария а пропускало до конца? для этого надо читать файл и если встречается коментарий- возвращать позицию начала коментария и пропускать до тех пор пока не встретиться позиция конечного?
0
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
||||||
22.06.2010, 13:01 | 50 | |||||
Я при объявлении флагов забыл проинициализировать один флаг.
1
|
22.06.2010, 13:13 [ТС] | 51 | |||||
да действительно, заменил все вышло.
0
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
||||||
22.06.2010, 13:55 | 52 | |||||
Не совсем понял.
Вот вариант со строками, получился еще больше, но если комментарий в отдельной строке, пропускает всю строку.
1
|
22.06.2010, 20:23 [ТС] | 53 | |||||
0
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
|
22.06.2010, 21:18 | 54 |
1
|
22.06.2010, 21:37 [ТС] | 55 | |||||
Код
9: error: variable or field `textor' declared void 9: error: initializer expression list treated as compound expression 9: error: invalid conversion from `char*' to `int' 9: error: expected `,' or `;' before '{' token In function `int main(int, char**)': 72: error: `textor' cannot be used as a function
0
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
||||||
22.06.2010, 21:40 | 56 | |||||
я это имел в виду
1
|
22.06.2010, 21:49 [ТС] | 57 |
Код
In file included from C:/Dev-Cpp/include/c++/3.4.2/backward/iostream.h:31, from E:\build22.06.2010_2034_func.cpp:1: C:/Dev-Cpp/include/c++/3.4.2/backward/backward_warning.h:32:2: warning: #warning This file includes at least one deprecated or antiquated header. Please consider using one of the 32 headers found in section 17.4.1.2 of the C++ standard. Examples include substituting the <X> header for the <X.h> header for C++ includes, or <iostream> instead of the deprecated header <iostream.h>. To disable this warning use -Wno-deprecated. E:\build22.06.2010_2034_func.cpp: In function `void textor(char*, char*, char*, char*)': E:\build22.06.2010_2034_func.cpp:14: error: declaration of 'std::ifstream file_in' shadows a parameter E:\build22.06.2010_2034_func.cpp:15: error: declaration of 'std::ofstream file_out' shadows a parameter E:\build22.06.2010_2034_func.cpp:17: error: invalid conversion from `void*' to `const char*' E:\build22.06.2010_2034_func.cpp:17: error: initializing argument 1 of `void std::basic_ifstream<_CharT, _Traits>::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]' E:\build22.06.2010_2034_func.cpp:22: error: return-statement with a value, in function returning 'void' E:\build22.06.2010_2034_func.cpp:24: error: invalid conversion from `void*' to `const char*' E:\build22.06.2010_2034_func.cpp:24: error: initializing argument 1 of `void std::basic_ofstream<_CharT, _Traits>::open(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]' E:\build22.06.2010_2034_func.cpp:29: error: return-statement with a value, in function returning 'void' E:\build22.06.2010_2034_func.cpp:63: error: return-statement with a value, in function returning 'void'
0
|
3528 / 2686 / 334
Регистрация: 11.03.2009
Сообщений: 6,168
|
||||||
22.06.2010, 21:58 | 58 | |||||
1
|
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
|
|
23.06.2010, 08:26 | 60 |
Сообщение было отмечено как решение
Решение
ТС, есл хочешь работоспособный мой код, стукни в личку. Года 3 назад я его выкладывал на одном из форумов. Не лень будет, дам координаты, зарегаешься, найдёшь. А меня там забанили.
1
|
23.06.2010, 08:26 | |
23.06.2010, 08:26 | |
Помогаю со студенческими работами здесь
60
Работа с файлами Работа с файлами работа с файлами Работа с файлами Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |