Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

08.12.2009, 19:34
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 215
Провел на форуме: 810079
Репутация:
90
|
|
Код:
FILE *fp;
char *files[] = {file1, file2, file3};
i=0;
while(i<3) {
printf("Обработка файла %s\n\t",files[i]);
if((fp=fopen(files[i],"r+"))==NULL) { //если файл невозможно открыть, то выкидывается ошибка и переходим к следующему файлу в массиве
perror("fopen");
fclose(fp);
i++;
}
//тут идёт обработка файла
i++;
Есть массив файлов, программа обрабатывает этот массив, но если файл невозможно открыть, то программа завершает свою работу. Вопрос: как сделать так, чтобы программа продолжала свою работу, если файл невозможно открыть?
ЗЫ: Прога вылетает с ошибкой Segmentation fault (Ошибка сегментации).
Последний раз редактировалось InFlame; 08.12.2009 в 20:35..
|
|
|

08.12.2009, 20:20
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
Есть массив файлов, программа обрабатывает этот массив, но если файл невозможно открыть, то программа завершает свою работу. Вопрос: как сделать так, чтобы программа продолжала свою работу, если файл невозможно открыть?
Прога завершается? или же всетаки с ошибкой вылетает? Если завершается нормально то гоняй в цикле пока массив с файлами не кончится.
|
|
|

08.12.2009, 20:34
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 215
Провел на форуме: 810079
Репутация:
90
|
|
Прога вылетает с ошибкой (Ошибка сегментации).
|
|
|

08.12.2009, 21:16
|
|
Познавший АНТИЧАТ
Регистрация: 01.12.2006
Сообщений: 1,769
Провел на форуме: 3718311
Репутация:
1118
|
|
вся проблема тут, ибо по условию "i<3" ты в результате получаеш 4!!! (0,1,2,3) а четвертую ячейку массива она не может высосать из воздуха, сделай условие "i<2".
Компилил в мозгах, могу ошибаться но врятли.
|
|
|

08.12.2009, 21:21
|
|
Участник форума
Регистрация: 19.05.2007
Сообщений: 281
Провел на форуме: 2823587
Репутация:
106
|
|
Сообщение от POS_troi
вся проблема тут, ибо по условию "i<3" ты в результате получаеш 4!!! (0,1,2,3) а четвертую ячейку массива она не может высосать из воздуха, сделай условие "i<2".
Компилил в мозгах, могу ошибаться но врятли.
Неа будет 0 1 2 когда i = 3 оно уже не прокатит по условию
|
|
|

08.12.2009, 21:28
|
|
Участник форума
Регистрация: 27.10.2008
Сообщений: 215
Провел на форуме: 810079
Репутация:
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
Провел на форуме: 2823587
Репутация:
106
|
|
Выложи весь код работы с файлами так ниче не понятно чё ты там делаеш, как удаляеш. В отладчике смотрел?
|
|
|

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

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

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