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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.01.2012, 12:44   #1
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию Продолжение студенческой темы v1.3

Функция создающая файл.

первый вариант:
Код:
void Create(){
	cout<<"Creating...\nPrint file name: ";
	string Name;
	cin>>Name;
	FILE *f1;
	f1=fopen(Name, fstream::binary);
	cout<<"\nYou creat file: "<<Name<<"\n";
	
	};
Ошибка в том что Name это string а не const char*

второй вариант:
Код:
void Create(){
	cout<<"Creating...\nPrint file name: ";
	string Name;
	cin>>Name;
	char *c[24];
	int i;
	for (i=0; i<Name.size();i++) 
	{c[i]=Name[i];};
	c[i]='\0';
	FILE *f1;
	f1=fopen(с, fstream::binary);
	cout<<"\nYou creat file: "<<Name<<"\n";	
	};
ругается на строчке "{c[i]=Name[i];};":

Цитата:
error C2440: '=' : cannot convert from 'char' to 'char *'
а разве квадратные скобочки после указателя не операция разыменования?


Да и еще, я вообще смогу таким образом создать файл с именем которое задаю во время работы программы? а то const char* намекает мне что это должна быть константа заданная в самой программе оО
pinkiller вне форума Ответить с цитированием
Старый 03.01.2012, 12:49   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
void Create(){
	cout<<"Creating...\nPrint file name: ";
	string Name;
	cin>>Name;
	FILE *f1;
	f1=fopen(Name.c_str(), fstream::binary);
	cout<<"\nYou creat file: "<<Name<<"\n";
	
	};
интересно, а почему не используете С++ файлы/потоки?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.01.2012, 12:55   #3
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

ofstream?

и создавать файл
ofstream binWrite(Name, ios::binary);
frieand ofstream& operator<<(ofstream&ofst, Box<Type> &Y) {
ofst.write(reinterpret_cast<char*>( &p),sizeof(Data));
}

??

как то так надо?
pinkiller вне форума Ответить с цитированием
Старый 03.01.2012, 13:03   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
void Create(){
	cout<<"Creating...\nPrint file name: ";
	string Name;
	cin>>Name;
	ofstream f1;
	f1.open(Name.c_str(), ofstream::binary||ofstream::out);
	cout<<"\nYou create file: "<<Name<<"\n";
	
	};
и в отличие от вашего кода, здесь потерь памяти и утечки ресурсов не будет.
Цитата:
frieand ofstream& operator<<(ofstream&ofst, Box<Type> &Y)
зделайте один раз правильную перегрузку для ostream

ну вообще я просто предложил, дело ваше, если не умеете то лучше С-файлы.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 03.01.2012 в 13:09.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.01.2012, 13:12   #5
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Если я правильно все понимаю, после выполнения этого блока кода. в папке с моим проектом должен был появиться файл с тем названием которое я записал во время работы программы? и никуда не удалиться после завершения работы?
pinkiller вне форума Ответить с цитированием
Старый 03.01.2012, 13:19   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

да, что в вашем варианте, что в моем.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 03.01.2012, 13:23   #7
pinkiller
Форумчанин
 
Регистрация: 29.10.2011
Сообщений: 141
По умолчанию

Это очень плохо))) У меня не появляется никакого файла(((

а так создается:

Код:
void Create(){
	cout<<"Creating...\nPrint file name: ";
	string Name;
	cin>>Name;
	ofstream f1(Name.c_str());
	f1.close();
	cout<<"\nYou create file: "<<Name<<"\n";
	};
если не пишу режим работы. с чем может быть связано и смогу ли я нормально работать с этим файлом если не укажу режим?

Последний раз редактировалось pinkiller; 03.01.2012 в 13:38.
pinkiller вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Продолжение С++ Maksim0905 Свободное общение 54 23.09.2012 09:16
КЛАССЫ В С++ (продолжение) kolyan_zver Общие вопросы C/C++ 3 26.09.2010 01:37
В продолжение темы об установке счетчика doober Microsoft Office Access 3 29.04.2010 16:06
А вы знаете, что пользователи могут в течении часа после создания темы редактировать заголовок темы? Alar О форуме и сайтах клуба 4 27.04.2010 15:20
Автоматическое сохранение + Печать. Продолжение темы "Перенос данных из Excel в Word" The_Andrei Microsoft Office Word 15 23.06.2009 23:46