
08.12.2009, 21:28
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 215
С нами:
9230381
Репутация:
90
|
|
Сообщение от POS_troi
вся проблема тут, ибо по условию "i<3" ты в результате получаеш 4!!! (0,1,2,3) а четвертую ячейку массива она не может высосать из воздуха, сделай условие "i<2".
Компилил в мозгах, могу ошибаться но врятли.
Всё там правильно, потому что в цикле стоит условие "меньше", а не "меньше-равно." Да и суть не в этом. Я искусственно удаляю второй файл и на нём программа вылетает, а надо чтобы продолжала работу.
Последний раз редактировалось InFlame; 08.12.2009 в 21:32..
|
|
|

08.12.2009, 21:36
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
С нами:
9989619
Репутация:
106
|
|
Выложи весь код работы с файлами так ниче не понятно чё ты там делаеш, как удаляеш. В отладчике смотрел?
|
|
|

08.12.2009, 21:46
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
С нами:
9017461
Репутация:
414
|
|
Емае, ну для кого отладчик придумали то? посмотри там на какой ф-ции вылетает и с какими параметрами.
|
|
|

08.12.2009, 21:59
|
|
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
С нами:
10233548
Репутация:
1118
|
|
Да и суть не в этом. Я искусственно удаляю второй файл и на нём программа вылетает
Используя массив в определении fopen ты делаеш себе грабли (это не глюк - это фишка и доволи подробно опианная в WWW).
Проверяй наличие файлов перед циклом, твоя ошибка не так в коде как в реализации идееи - не стой стороны зашел.
i<3 - протупил, не о том думал =/
Последний раз редактировалось POS_troi; 08.12.2009 в 22:10..
|
|
|

09.12.2009, 09:54
|
|
Познающий
Регистрация: 18.08.2008
Сообщений: 45
С нами:
9331083
Репутация:
64
|
|
fclose(fp);
- если файл не открылся, мб и не надо его закрывать? =)
п.с. фигурной скобки закрывающей не хватает одной, надеюсь она там дальше у тебя есть, и отступ после иф не соблюдён почему-то
Последний раз редактировалось winterfrost; 09.12.2009 в 09:59..
|
|
|

09.12.2009, 10:29
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
С нами:
9989619
Репутация:
106
|
|
Сообщение от winterfrost
fclose(fp);
- если файл не открылся, мб и не надо его закрывать? =)
В этом ты прав)
The fopen() function opens a file indicated by fname and returns a stream associated with that file. mode is used to determine how the file will be treated (i.e. for input, output, etc).
If there is an error, fopen() returns NULL.
Если файл не открыт то он пытается закрыть указатель на адрес файла который равен 0 поэтому и получает ошибку сегментации 
|
|
|

09.12.2009, 11:18
|
|
Познающий
Регистрация: 18.08.2008
Сообщений: 45
С нами:
9331083
Репутация:
64
|
|
Код:
if ((fp=fopen(files[i],"r+"))==NULL) {
perror("fopen");
i++;
continue; // <--
}
попробуй добавить continue, что-бы перейти к следующей интерации цикла
|
|
|

09.12.2009, 11:41
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 215
С нами:
9230381
Репутация:
90
|
|
Всем спасибо, исправил.
|
|
|

09.12.2009, 17:03
|
|
Постоянный
Регистрация: 06.05.2007
Сообщений: 393
С нами:
10008797
Репутация:
398
|
|
кто в курсе как проактивно защитить файл от удаления в системе windows ?
типа LockFileEx, ZwLockFileEx, NtLockFileEx
|
|
|

09.12.2009, 17:13
|
|
Познающий
Регистрация: 16.07.2008
Сообщений: 82
С нами:
9379631
Репутация:
142
|
|
кто в курсе как проактивно защитить файл от удаления в системе windows ? типа LockFileEx, ZwLockFileEx, NtLockFileEx
Удаление файла сводиться к отсылке IRP_MJ_SET_INFORMATION c FileInformationClass = FileDispositionInformation.
Вывод: писать драйвер фильтр фс и отклонять такие irp для нужного файла.
Последний раз редактировалось _antony; 09.12.2009 в 17:15..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|