|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Сортировка в файле |
|
|
C/C++ - Сортировка в файле
|
Пользователь Сообщения: 147 |
Профиль | Отправить PM | Цитировать Как осущесвялется сортировка в файлах и поиск.
пример. ФАйла в одной строке одно слова. Расортировать их по алфавиту и разбить на файлы по кол-ву букв. |
|
Отправлено: 11:39, 09-07-2008 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать Цитата DENoszone:
Стоит попробовать не подлежащие конвертации параметры в кавычки и L перед ними, например так L"C:\\Boot.ini" если указывать напрямую имя файла без использования переменной. Или прикрутить функцию MultiByteToWideChar Цитата DENoszone:
Можно записать и строчкой, но для функций с большим количеством передаваемых параметров предложенный вариант смотрится куда лучше. Опечатка это, string хотели написать, но его нету в С, максимум в этом направлении char * !bResult отрицание этой переменной, читается как "Не bResult". |
||
Отправлено: 14:37, 14-07-2008 | #21 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1404
|
Профиль | Отправить PM | Цитировать Хорошая ошибка.
Первый вариант : заточить код под Unicode, я этого не умею - все упирается в константные указатели (я еще не совсем понимаю, как с ними работать, как "поместить" строку с неизвестной длиной в константный указатель на строку), в моем проекте указатели неконстантные. Второй вариант: Project - Properties - General - Character Set - поставить Not set Третий вариант: вместо CreateFile, MessageBox, CharToOem явно указать CreateFileA, MessageBoxA, CharToOemA find это моя пользовательская функция. Про strng, пользовательский тип данных я все объяснил выше. По поводу hFile=CreateFile сюда http://msdn.microsoft.com/en-us/library/aa363858.aspx Цитата:
BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped ); ReadFile возвращается значение типа BOOL Значение, возвращенное функцией было помещено в переменную bResult. Мы не знаем, что туда было помещено. Чтобы предпринять какие-то действия в зависимости от того, что в этой епременной, мы используем условный оператор if Синтаксис условного оператора IF ( ПРОВЕРОЧНОЕ_ВЫРАЖЕНИЕ) ДЕЙСТВИЕ Проверочное выражение/ условное выражение - выражение которое при выполнении оказывается либо 1, либо 0. Действие выполняется, если в проверочном выражении оказывается 1 IF ( ПРОВЕРОЧНОЕ_ВЫРАЖЕНИЕ) ДЕЙСТВИЕ 1 ELSE ДЕЙСТВИЕ 2 Действие 1 выполняется, если в условном выражении оказывается 1 Действие 2 выполняется, если в условном выражении оказывается 0 В условном выражении может понадобится проверить несколько операторов. Булева алгебра: ЛОГИЧЕСКОЕ И "возвращает" 1, если все выражение входящие в И истинны, и 0 в противном случае ЛОГИЧЕСКОЕ ИЛИ "возвращает" 1, если хотя бы одно из выражений входящих в ИЛИ истинно, и 0, если все выражения ложны ЛОГИЧЕСКОЕ НЕТ "возвращает" 1, если в выражении 0. Возвращает 0, если в выражении 1. ЛОГИЧЕСКОЕ И в языке С обозначается && ЛОГИЧЕСКОЕ ИЛИ в языке С обозначается || ЛОГИЧЕСКОЕ НЕТ в языке С обозначается ! if(!bResult) { Msg("Невозможно прочитать файл!"); //Если в bResult оказалась 1 } else { find(t, (int)fzi, 10,3); //Если в bResult оказалась 0 } Если в bResult оказался 0, то это означает что прочитать из файла не удалось Если в bResult оказался не 0, то это означает что прочитать из файла удалось (См что может вернуть функция Read File ЛОГИЧЕСКОЕ НЕТ (!bResult) меняет значение bResult на противоположное: 1 на 0, 0 на 1. Таким образом если в bResult оказался 0, то !bResult означает 1 Таким образом если в bResult оказался не 0, то !bResult означает 0 Если !bResult != 0, то выполняется Msg("Невозможно прочитать файл!"); Если !bResult == 0, то выполняется find(t, (int)fzi, 10,3); По другому условное выражение можно переписать так Цитата:
|
||
------- Отправлено: 15:20, 14-07-2008 | #22 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать не знаю...вообще тут все как то сильно накручено.
попробую сам написать. единственое что обьясните. пройтись по всему файлу и запиать в масив.дальше я уже что то добавлю сам. |
Отправлено: 10:56, 15-07-2008 | #23 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать Откраваешь файл для чтения и записи, измеряешь размер фаула, создаешь динамический массив таккого размеры, читаеешь туды весь фаул, сортируешь массив, ставишь указатель на начало фаула и сбрасываешь туда весь массив. В результате файл содержит упорядоченные данные.
|
Отправлено: 12:40, 15-07-2008 | #24 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать |
Отправлено: 14:09, 15-07-2008 | #25 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать надо '\n' заменить на EOF
|
Отправлено: 14:56, 15-07-2008 | #26 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать прекрасно...только мне надо что бы был первый цикл проверял EOF если нет..то заходил во второй и там записывал до '\n'
|
Отправлено: 15:39, 15-07-2008 | #27 |
Новый участник Сообщения: 30
|
Профиль | Отправить PM | Цитировать Цитата DENoszone:
EOF всегда есть! EndOfFile |
|
Отправлено: 15:50, 15-07-2008 | #28 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать Алгоритм:
Записывает по символьно...до '\n' проверяет является это равно другой переменной. если не равняеся то переход в следущую строчку...и так далее до EOF |
Отправлено: 10:52, 16-07-2008 | #29 |
|
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - Сортировка файлов | kt626 | Скриптовые языки администрирования Windows | 2 | 28-03-2009 10:47 | |
Сортировка... | skeletor | Хочу все знать | 14 | 16-03-2007 18:32 | |
Сортировка в Exсel | Evita | Хочу все знать | 2 | 11-01-2006 14:24 | |
Многофазная сортировка | mask | Программирование и базы данных | 1 | 04-06-2003 23:40 | |
Быстрая сортировка | noname00.pas | Программирование и базы данных | 12 | 04-03-2002 17:32 |
|