Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ошибка при работе с файлом 
V
    Опции темы
Funtik
Дата 4.6.2007, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2007

Репутация: нет
Всего: нет



Я вот хочу поработать с двоичным файлом, но вот каждый раз выдает сообщение об ошибке.
Пишу в Visual Studio 8.0  , хотя раньше этот же код работал на 6-ой версии без проблем.
Так что же не так? В чем ошибка?


Код

#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;

int main()                  
{
    char filename[81];        

    cout<<"\t\tVvedite imya faila: >>> "; cin.getline(filename,80);

    fstream potok(filename, ios::binary | ios::in | ios::out);  
    if(!potok)
    {
        cout << "\aFail " << filename << " ne bil uspershno otkrit";   
        return -1;
    }

    potok.close();     

    return 0;
}

PM MAIL   Вверх
Earnest
Дата 4.6.2007, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Какое сообщение об ошибке выдает и кто? Компилятор? Или уже при запуске?

Но скорее всего опять проблемы с UNOCODE: проект у тебя, видимо, создан по-умолчанию с UNOCODE. Либо отключи, либо используй универсальные макро-функции и макро-типы (LPCTSTR, etc). За подробностями - в поиск по форуму. Уже раз триста обсуждали.


--------------------
...
PM   Вверх
Funtik
Дата 4.6.2007, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2007

Репутация: нет
Всего: нет



Вот эта часть всегда срабатывает:

 
Код

if(!potok)
    {
        cout << "\aFail " << filename << " ne bil uspershno otkrit";   
        return -1;
    }


Не может быть открыт. 

PM MAIL   Вверх
Greeen
Дата 4.6.2007, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 710
Регистрация: 13.8.2006
Где: Петербург

Репутация: 7
Всего: 18



Код

...
if(!potok.is_open())
{
    cout << "\aFail " << filename << " ne bil uspershno otkrit";   
    return -1;
}
...



--------------------
Подпись больше не нужна
PM MAIL ICQ Skype   Вверх
Funtik
Дата 4.6.2007, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2007

Репутация: нет
Всего: нет



Greeen, что то не понял я твоего ответа
PM MAIL   Вверх
Xenon
Дата 4.6.2007, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



У тебя файл уже должен существовать. Если он не существует - выводится ошибка, в противном случае файл нормально открывается.


--------------------
user posted image  
PM MAIL   Вверх
Funtik
Дата 4.6.2007, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2007

Репутация: нет
Всего: нет



Xenon,  А вот когда я писал на 6-ой версии он автоматически создавался при вводе в самой программе.
А почему тут нельзя так????????????????????????
PM MAIL   Вверх
Xenon
Дата 4.6.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Funtik, может ты путаешь и там ты открывал файл только на вывод - тогда да, он создается автоматически. Когда откроешь одновременно на ввод и одновременно на вывод  фал не создается.


--------------------
user posted image  
PM MAIL   Вверх
Funtik
Дата 4.6.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2007

Репутация: нет
Всего: нет



У меня вроде вообще не как открывает, даже если есть. 
Xenon, кинька сюда плиз какой нибудь двоичный файл для проверки.
Ох че-то вообще не как не идет.
PM MAIL   Вверх
Xenon
Дата 4.6.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Funtik, а какая разница - ты ему любой файл подсунь.


--------------------
user posted image  
PM MAIL   Вверх
Funtik
Дата 4.6.2007, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2007

Репутация: нет
Всего: нет



А все врубился!!! Ладно спабки
PM MAIL   Вверх
Funtik
Дата 4.6.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 13
Регистрация: 4.6.2007

Репутация: нет
Всего: нет



Все равно 
Xenon,  я точно уверен что в 6-ой версии он в программе приведенной мной выше открывал файл если такой уже существовал а если нет то создавал его сам. Это так! Можешь проверить если есть 6-ка smile 
PM MAIL   Вверх
Xenon
Дата 4.6.2007, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



Funtik, не знаю, у меня шестой студии, но если так сильно нужно именно такое поведение, можешь сначала открыть чисто на запись - если создаться файл, то переткрой на запись/чтение


--------------------
user posted image  
PM MAIL   Вверх
archimed7592
Дата 6.6.2007, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(Funtik @  4.6.2007,  12:34 Найти цитируемый пост)
А почему тут нельзя так???????????????????????? 
потому что 8-я студия больше соответствует стандарту, чем 6-я(что, собственно говоря, не удивительно)...
binary | in | out открывает файл в режиме "r+b", а для режима r+b файл должен существовать. иначе ошибка.

см. ISO/IEC-14882 27.8.1.3/2 и ISO/IEC-9899 7.19.5.3/3


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Xenon
Дата 6.6.2007, 01:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1529
Регистрация: 12.4.2006

Репутация: 11
Всего: 50



archimed7592, спасибо я уточняющую информацию - поучительно smile
PS. Блин, как вы все это в стандарте находите ...
PS2. То есть это только для binary? Текстовой режим в другом каком-то формате открывается?


Это сообщение отредактировал(а) Xenon - 6.6.2007, 01:25


--------------------
user posted image  
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0994 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.