Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2010, 20:39   #1
devl
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 20
По умолчанию Функция open() возвращает неверный дескриптор

Доброго времени суток! Необходимо записать в бинарный файл матрицу чисел, но ф-ия open() возвращает дескриптор или -1, или 1, в результате чего вывод идет на экран (что мне совсем не нужно). Вот код, который сбоит:
Код:
int fd,i;
if(fd = open(filename,O_WRONLY) != -1)
{
	for(i=0;i<a->size;i++)
		write(fd,a->m[i],(sizeof(int))*(a->size));
	close(fd);
}
else
	printf("can't open file\n");
имя файла test, a - указатель на структуру, содержащую квадратную матрицу m. Не подскажите в чем причина такого поведения?
devl вне форума Ответить с цитированием
Старый 11.01.2010, 20:54   #2
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Код:
int i;
FILE *fd;

fd = fopen(filename,"w");
if(fd)
{
.................................
	fwrite(...........);
.................................
	fclose(fd);
}
Почитай про эти функции в любой литературе по С.

Последний раз редактировалось profi; 11.01.2010 в 21:00.
profi вне форума Ответить с цитированием
Старый 11.01.2010, 21:03   #3
devl
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 20
По умолчанию

Спасибо, такой вариант я знаю, но мне необходимо использовать только низкоуровневые функции read, write, open, close.
devl вне форума Ответить с цитированием
Старый 11.01.2010, 21:27   #4
profi
Участник клуба Подтвердите свой е-майл
 
Регистрация: 19.11.2007
Сообщений: 1,022
По умолчанию

Хм... значит нужно провести неформатируемый двоичный ввод.

Код:
ofstream out(filename,ios::out|ios::binary);

if(out)
{
	for(i=0;i<a->size;i++)
		out.write((char*)a->m[i],(sizeof(int))*(a->size));
out.close();
}
Что-то типа такого.

Последний раз редактировалось profi; 11.01.2010 в 22:10.
profi вне форума Ответить с цитированием
Старый 12.01.2010, 13:56   #5
devl
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 20
По умолчанию

Спасибо! Забыл за ofstream)
devl вне форума Ответить с цитированием
Старый 12.01.2010, 15:44   #6
RoS
Форумчанин
 
Аватар для RoS
 
Регистрация: 13.12.2009
Сообщений: 272
По умолчанию

ППц а fstream разве такие же низкоуровневые как opne?o_O
Если я помог вам - порадуйте меня, нажмите на весы слева
RoS вне форума Ответить с цитированием
Старый 12.01.2010, 17:08   #7
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

open( filename, O_CREAT | O_WRONLY | O_TRUNC )
Carbon вне форума Ответить с цитированием
Старый 12.01.2010, 18:26   #8
devl
Пользователь
 
Регистрация: 28.10.2009
Сообщений: 20
По умолчанию

To: Ros
нет, не такие же. Да и я пишу на Си, а fstream/ostream это из плюсов. но все равно спасибо profi.
devl вне форума Ответить с цитированием
Старый 12.01.2010, 20:36   #9
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

Ещё одна мысль: ты на чистых сях пишешь? Если да, то возможно у тебя не подключен нужный хедер или неприлинкована нужная либа. Бывает так, что компилится нормально, а некоторые функции потом не работают.
Carbon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при работе с canvas "Неверный дескриптор" Алекс Ялта Gamedev - cоздание игр: Unity, OpenGL, DirectX 17 13.06.2011 22:32
Что возвращает эта функция? D[I]K Общие вопросы C/C++ 9 07.10.2009 00:32
Из за чего пишет неверный дескриптор AquaKlaster Общие вопросы Delphi 9 12.09.2009 16:23
Почему функция не возвращает никакое значение? Тупой Общие вопросы Delphi 1 31.05.2009 17:31
Функция StrtoFloat не правильно возвращает число Ra88it Помощь студентам 2 02.12.2008 20:26