Показать полную графическую версию : Сортировка в файле
'CharToOemW' ... 'CreateFileW' ... 'MessageBoxW' »
А где оно в теме встречалось?
Стоит попробовать не подлежащие конвертации параметры в кавычки и L перед ними, например так L"C:\\Boot.ini" если указывать напрямую имя файла без использования переменной.
Или прикрутить функцию MultiByteToWideChar
hFile=CreateFile(d,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL) »
Этот код означает что переменной hFile присваивается значения функции CreateFile которой передаются указанные в скобках параметры.
Можно записать и строчкой, но для функций с большим количеством передаваемых параметров предложенный вариант смотрится куда лучше.
Опечатка это, string хотели написать, но его нету в С, максимум в этом направлении char *
!bResult отрицание этой переменной, читается как "Не bResult".
Хорошая ошибка.
Первый вариант : заточить код под 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
!bResult
Описание функции:
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, либо 0
Если в bResult оказался 0, то это означает что прочитать из файла не удалось
Если в bResult оказался не 0, то это означает что прочитать из файла удалось
(См что может вернуть функция Read File
Nonzero indicates success. Zero indicates failure.
ЛОГИЧЕСКОЕ НЕТ (!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);
По другому условное выражение можно переписать так
if (bResult !=0)
{
find(t, (int)fzi, 10,3);
}
else
{
Msg("Невозможно прочитать файл!");
}
DENoszone
15-07-2008, 10:56
не знаю...вообще тут все как то сильно накручено.
попробую сам написать.
единственое что обьясните.
пройтись по всему файлу и запиать в масив.дальше я уже что то добавлю сам.
Откраваешь файл для чтения и записи, измеряешь размер фаула, создаешь динамический массив таккого размеры, читаеешь туды весь фаул, сортируешь массив, ставишь указатель на начало фаула и сбрасываешь туда весь массив. В результате файл содержит упорядоченные данные.
DENoszone
15-07-2008, 14:09
while((ch=fgetc(login_txt)) != '\n')
{
if (login==ch)
{
cout<<"good";
}
}
как запихнуть в цикл что бы оно так каждую строчку проходило?
надо '\n' заменить на EOF
DENoszone
15-07-2008, 15:39
прекрасно...только мне надо что бы был первый цикл проверял EOF если нет..то заходил во второй и там записывал до '\n'
если нет.. » Что значит если нет?
EOF всегда есть! EndOfFile
DENoszone
16-07-2008, 10:52
Алгоритм:
Записывает по символьно...до '\n' проверяет является это равно другой переменной.
если не равняеся то переход в следущую строчку...и так далее до EOF
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.