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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2012, 17:42   #1
Артём Волжанкин
Пользователь
 
Аватар для Артём Волжанкин
 
Регистрация: 07.07.2012
Сообщений: 99
По умолчанию Открытие и закрытие файла (С++)

Помогите, пожалуйста, разобраться.

Почему когда пишу

Код:
fstream f("C:\\cpp\\text5.txt", ios_base::in|ios_base::out);
запись в файл не происходит,
а когда изменю код и объявляю два раза

Код:
fstream f("C:\\cpp\\text5.txt", ios_base::in);
fstream fi("C:\\cpp\\text5.txt", ios_base::out);
работает.
В литературе написано, что можно ios_base::in|ios_base:ut использовать одновременно.
Человек
Артём Волжанкин вне форума Ответить с цитированием
Старый 23.07.2012, 18:29   #2
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

выложите весь исходник, возможно проблема не совсем тут
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 23.07.2012, 19:20   #3
Артём Волжанкин
Пользователь
 
Аватар для Артём Волжанкин
 
Регистрация: 07.07.2012
Сообщений: 99
По умолчанию

Код:
#include<iostream>
#include<fstream>
using namespace std;

struct scan_info{
		char model[25]; 
		int price;
		double x_size;
		double y_size;
		int optr;
		int grey;
	};

int zapisVPoziciu();
int uplotnenie();

int main(){
	setlocale(LC_ALL, "RUS");
	if (zapisVPoziciu()){
		cout << "Ошибка записи в файл\n";
		return -1;
	};
	system("PAUSE");
	if (uplotnenie()){
		cout << "Ошибка в уплотнение файла\n";
		return -1;
	};
	
	system("PAUSE");
	return 0;
}

int zapisVPoziciu(){
	cout << "\aВведите номер позиции заполнения\n - > ";
	int poz=0;
	cin >> poz;
	fstream f("C:\\cpp\\text5.txt", ios_base::in);
	if (!f.is_open()){
		cout << "Ошибка открытия файла\n";
		return -1;
	}

	scan_info mas[100];
	int kol_zap=0;

	f >> kol_zap;
	cout << kol_zap;
	
	if (kol_zap==0){ 
		cout << "Файл пуст\n";
		kol_zap=poz;
		for (int i=0; i<kol_zap-1; i++){
			strncpy(mas[i].model, "0\0", 2);
			mas[i].price=0;
			mas[i].x_size=0;
			mas[i].y_size=0;
			mas[i].optr=0;
			mas[i].grey=0;
		}
		cout << "Заполните данные\n";
		cin >> mas[poz-1].model;
		cin >> mas[poz-1].price;
		cin >> mas[poz-1].x_size;
		cin >> mas[poz-1].y_size;
		cin >> mas[poz-1].optr;
		cin >> mas[poz-1].grey;
	} else {
		cout << "Файл не пуст\n";
		kol_zap++;
		for(int i=0; i<kol_zap; i++){
			if (i+1==poz){
				cout << "Заполните данные\n";
				cin >> mas[i].model;
				cin >> mas[i].price;
				cin >> mas[i].x_size;
				cin >> mas[i].y_size;
				cin >> mas[i].optr;
				cin >> mas[i].grey; 
			} else {
				f >> mas[i].model;
				f >> mas[i].price;
				f >> mas[i].x_size;
				f >> mas[i].y_size;
				f >> mas[i].optr;
				f >> mas[i].grey;
			}
		}
	}
	f.close();

	fstream fi("C:\\cpp\\text5.txt", ios_base::out);
	if (!fi.is_open()){
		cout << "Ошибка открытия файла\n";
		return -1;
	}
	fi << kol_zap<< "\n";
	for(int i=0; i<kol_zap; i++){
		fi << mas[i].model << "\n";
		fi << mas[i].price << "\n";
		fi << mas[i].x_size << "\n";
		fi << mas[i].y_size << "\n";
		fi << mas[i].optr << "\n";
		fi << mas[i].grey << "\n";
	}

	fi.close();
	return 0;
}

int uplotnenie(){
	fstream f("C:\\cpp\\text5.txt", ios_base::in|ios_base::out);
	if (!f.is_open()){
		cout << "Ошибка открытия файла\n";
		return -1;
	}
/*
	int kol_zap=0;
	f >> kol_zap;
	if (kol_zap>0){
		while(!f.eof()){
			int pro;
			f >> pro;
			if (pro == 0){
	//			delete (0, 35, f);
			}
		}
	}
	*/
	f.close();
	return 0;
}
Человек
Артём Волжанкин вне форума Ответить с цитированием
Старый 23.07.2012, 20:07   #4
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Код:
delete (0, 35, f);
Это что?
Somebody вне форума Ответить с цитированием
Старый 23.07.2012, 21:47   #5
Артём Волжанкин
Пользователь
 
Аватар для Артём Волжанкин
 
Регистрация: 07.07.2012
Сообщений: 99
По умолчанию

тот код закомментирован. Я еще не написал его. Функция int zapisVPoziciu() сейчас работает только в таком варианте, а хотелось бы переделать в соответствии с вопросом в теме
Человек
Артём Волжанкин вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие/закрытие CD по сети Der_G()RuNu(h Работа с сетью в Delphi 9 20.08.2011 12:11
Открытие/Закрытие СД-РОМа (Sandr) Общие вопросы C/C++ 1 16.02.2011 22:47
2 формы(открытие закрытие) начинающий1 Общие вопросы Delphi 15 15.07.2010 22:54
открытие-закрытие файла dante92 Помощь студентам 0 13.06.2010 13:17
Открытие/Закрытие CD привода unicode Общие вопросы C/C++ 4 22.07.2009 15:17