powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Почему не открывается файл?
9 сообщений из 9, страница 1 из 1
Почему не открывается файл?
    #34443265
A.D.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый!
Нижеприведенный пример из книжки:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
#include <iostream>
#include <fstream>
using namespace std;

int get_int(int default_value);
char name[ 20 ];

int main() {
    char filename[ 81 ];
    int n;
    int age;
    int recsize = sizeof(name) + sizeof(int);
    

    cout << "Enter file name: ";
    cin.getline(filename,  80 );

    // Open file for binary read and write.    

    fstream  fbin(filename, ios::binary | ios::in | ios::out);
    if (!fbin) {
        cout << "Could not open file " << filename;
        return - 1 ;
    }

//  Get record number to write to.

    cout << "Enter file record number: ";
    n = get_int( 0 );

    // Get data from end user.

    cout << "Enter name: ";
    cin.getline(name,  19 );
    cout << "Enter age: ";
    age = get_int( 0 );

    // Write data to the file.
 
    fbin.seekp(n * recsize);
    fbin.write(name,  20 );
    fbin.write(reinterpret_cast<char*>(&age), sizeof(int));
    fbin.close();
    return  0 ;
}

// Get integer function
// Get an integer from keyboard; return default
//  value if user enters 0-length string.
//
int get_int(int default_value) {
    char s[ 81 ];

    cin.getline(s,  80 );
    if (strlen(s) ==  0 )
         return default_value;
    return atoi(s);
}


Но при вызове почему-то всегда выдается сообщение, что файл не открыт.
Проверяю дескриптор fbin, так он почему-то всегда = 0.
Где может быть "засада"?

Заранее спасибо.
С уважением
...
Рейтинг: 0 / 0
Почему не открывается файл?
    #34443305
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файло-то существует? Если да - проверь права доступа, ежели нет то в конструкторе надо еще чего-нибудь сказать
...
Рейтинг: 0 / 0
Почему не открывается файл?
    #34443349
pandrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
   fstream  fbin(filename, ios::binary | ios::in | ios::out);
   if (!fbin) 

Вот здесь какой-то бред написан, проверь свою книжку.
...
Рейтинг: 0 / 0
Почему не открывается файл?
    #34443376
A.D.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот пример я с диска, прилагаемого к книге скопирнул.
Что интересно, вот такой пример работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
#include <iostream>
#include <fstream>
using namespace std;

int main() {
    char filename[ 81 ];

    cout << "Enter a file name and press ENTER: ";
    cin.getline(filename,  80 );
    ofstream file_out(filename);
    if (! file_out) {
        cout << "File " << filename << " could not be opened.";
        return - 1 ;
    }
    cout << "File " << filename << " was opened.";
    file_out << "I am Blaxxon," << endl;
    file_out << "the cosmic computer." << endl;
    file_out << "Fear me.";
    file_out.close();
    return  0 ;
}

Т.е. для обычного текста файл создается и открывается, а для binary, при наличии вот этой строки:
Код: plaintext
fstream  fbin(filename, ios::binary | ios::in | ios::out);
получается хрень!
...
Рейтинг: 0 / 0
Почему не открывается файл?
    #34443668
A.D.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще посмотрел. Действительно, если файл существует, то все проходит нормально. Тогда еще вопрос: Почему, в случае, с файлом, куда пишем текст, он (в смысле, файл) создается просто при задании его имени. А в случае с binary файлом нет?
Заранее спасибо.
...
Рейтинг: 0 / 0
Почему не открывается файл?
    #34443936
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A.D.Еще посмотрел. Действительно, если файл существует, то все проходит нормально. Тогда еще вопрос: Почему, в случае, с файлом, куда пишем текст, он (в смысле, файл) создается просто при задании его имени. А в случае с binary файлом нет?
Заранее спасибо.
Ты фысшш файл так создаешь
fstream fbin(filename);
тогда посмотри default значение флажков ios
PS Что за книжку читаешь?
...
Рейтинг: 0 / 0
Почему не открывается файл?
    #34443951
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://doks.gorodok.net/?p=262
class ios {
public:
//...
enum open_mode {
in=1, // открыть на чтение
out=2, // открыть как выходной
ate=4, // открыть и переместиться в конец файла
app=010, // добавить
trunc=020, // сократить файл до нулевой длины
nocreate=040, // неудача, если файл не существует
noreplace=0100 // неудача, если файл существует
};
//...
};
...
Рейтинг: 0 / 0
Почему не открывается файл?
    #34443960
A.D.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"С++ без страха" Оверленда.
...
Рейтинг: 0 / 0
Почему не открывается файл?
    #34443988
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не читал, но название пугающее
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Почему не открывается файл?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]