Qt 4.5.2 Ubuntu 9.10 PHP: #ifndef XO_II_H #define XO_II_H struct crd { int x; int y; }; class xo_ii { public: xo_ii(); crd * CrdOpr(int * mas, int poss); private: int SummStr(int * mas,int nStr); int SummDl1(int * mas); int SummDl2(int * mas); crd * OprNullStr(int * mas,int nStr); crd * OprNullDl1(int * mas); crd * OprNullDl2(int * mas); }; #endif // XO_II_H может тут че не так сделал...
Ну вот. а у MFC допустим свои заморочки (покрайне мере я вечно нарываюсь). да и компилитцо то оно компилитцо а ты вызови данную функцию и получиш подзатыльник от компилятора
тут тоже нужно поменять заменить Code: int SummStr(int * mas,int nStr); на Code: int SummStr (int* mas[], int nStr);
Code: 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 (Ошибка сегментации).
Прога завершается? или же всетаки с ошибкой вылетает? Если завершается нормально то гоняй в цикле пока массив с файлами не кончится.
вся проблема тут, ибо по условию "i<3" ты в результате получаеш 4!!! (0,1,2,3) а четвертую ячейку массива она не может высосать из воздуха, сделай условие "i<2". Компилил в мозгах, могу ошибаться но врятли.
Всё там правильно, потому что в цикле стоит условие "меньше", а не "меньше-равно." Да и суть не в этом. Я искусственно удаляю второй файл и на нём программа вылетает, а надо чтобы продолжала работу.
Выложи весь код работы с файлами так ниче не понятно чё ты там делаеш, как удаляеш. В отладчике смотрел?
Емае, ну для кого отладчик придумали то? посмотри там на какой ф-ции вылетает и с какими параметрами.
Используя массив в определении fopen ты делаеш себе грабли (это не глюк - это фишка и доволи подробно опианная в WWW). Проверяй наличие файлов перед циклом, твоя ошибка не так в коде как в реализации идееи - не стой стороны зашел. i<3 - протупил, не о том думал =/
fclose(fp); - если файл не открылся, мб и не надо его закрывать? =) п.с. фигурной скобки закрывающей не хватает одной, надеюсь она там дальше у тебя есть, и отступ после иф не соблюдён почему-то
В этом ты прав) Если файл не открыт то он пытается закрыть указатель на адрес файла который равен 0 поэтому и получает ошибку сегментации
Code: [FONT=Fixedsys]if ((fp=fopen(files[i],"r+"))==NULL) { perror("fopen"); i++; continue; // <-- }[/FONT] попробуй добавить continue, что-бы перейти к следующей интерации цикла
кто в курсе как проактивно защитить файл от удаления в системе windows ? типа LockFileEx, ZwLockFileEx, NtLockFileEx