| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > работа fopen |
| Автор: Annihilator 19.6.2008, 22:26 | ||
Товарищи, столкнулся с такой вещью. У Шилдта, у Дейтела есть такой пример для файлов
код не дословно но смысл сохранен. Он заключается в том, что если мы хотим открыть файл для записи туда, мы должны проверить его на существование, если его нет то выдаст "Cannot open file!". Теперь вопрос, зачем это делать если, как я убедился, файл создается в случае отсутствия, либо другой вопрос, может быть в ранних средах (до VS2008, builder 2006) он не создавался??? |
| Автор: Daevaorn 19.6.2008, 22:30 |
| Согласитесь, что "Cannot open file!" это не то же самое что "файла не существует". Причин неоткрытия файла на запись много. |
| Автор: DRUID3 19.6.2008, 22:31 |
| |
| Автор: bsa 19.6.2008, 22:36 |
| кстати об ошибках, какой грамотный способ получения причины неоткрытия с помощью fstream? |
| Автор: rrrFer 19.6.2008, 23:08 |
| bsa, есть функции для проверки потоков на ошибки eof,rdstate,fail,bad...они возвращаеют либо 0 либо 1, в зависимости от значении полей структуты io_state. Я бы так делал |
| Автор: Annihilator 19.6.2008, 23:14 |
| А может errno заюзать совместно с perror(char *mess)??? |
| Автор: bsa 19.6.2008, 23:15 | ||
| rrrFer, меня интересует причина. Например, No space on disk, Permission denied и подобное. Добавлено через 1 минуту и 31 секунду
Есть гарантии, что errno (а perror работает через нее) будет содержать верное значение? |
| Автор: Annihilator 19.6.2008, 23:22 |
| Ну тогда проверить Sys_nerr, на наличие новых добавленных кодов ошибок |
| Автор: bsa 20.6.2008, 00:06 | ||
Какому стандарту соответствует? |
| Автор: Annihilator 20.6.2008, 08:32 |
ANSI C 89 |
| Автор: bsa 20.6.2008, 08:58 | ||
Очень странно. Все что я нашел в инете на эту тему звучит так: "Эта штука соответствует 4.4BSD с некоторыми ограничениями, но уже устарела и вместо нее нужно использовать strerror()". Про что-то стандартное ничего не нашел. Более того, народ жалуется, что на 64-х битных платформах эта штука не работает. Можно мне ссылочку или цитату из стандарта? |
| Автор: Annihilator 20.6.2008, 10:19 |
http://www.opennet.ru/man.shtml?topic=stdio&category=3 |