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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2012, 07:02   #1
KatCH
Пользователь
 
Регистрация: 15.02.2010
Сообщений: 54
По умолчанию Перемещение курсора в текстовом файле

Доброго времени суток.
Передо мной стоит задание, реализовать программу для тестирования(в простонародье "Тесты"). В программе предусмотрено создание нового теста, при чем, количество ответов к тесту, так же может быть разным для отдельно взятого (привожу фрагмент кода, ответственного за реализацию этой ф-ции):
Код:
int CreateTest(char *name)
		{
			int QCount;//count of question
			int ACount;//count of Answer in Question
			int i;//number for question 
			i=1;
			ofstream TFile(name);
			cout<<"Enter count of question->";
			cin>>QCount;		
			while(QCount>0)
			{
				cout<<"Enter question #"<<i<<endl;
				cin.getline(TQuestion,sizeof(TQuestion));
				TFile<<i<<"."<<TQuestion<<endl;
				cout<<"Enter count answer in this question->";
				cin>>ACount;
				for (int k=1; k<ACount+1; k++)//"ACount+1" because "k" begins with 1;
				{
					cout<<"Enter answer #"<<k<<endl;
					cin.getline(TAnswer,sizeof(TAnswer));
					TFile<<i<<"."<<k<<" "<<TAnswer<<endl;
				}
			QCount--;
			i++;
			}
			cout<<"DONE!"<<endl;
			TFile.close();
			return i;
		}
Проблема состоит в следующем:
Для реализации ф-ции "Редактирование вопроса", мне не подходит вариант заполнения структуры, с константным размером массивов и их перебором.
Структура файла примерно такая:
1. Question
1.1. Answer
1.2. Answer
1.3. Answer

1. Question
1.1. Answer
1.2. Answer

N. Question
N.1. Answer
N.2. Answer
N.3. Answer
Думаю решить это след. образом:
Считывать первый символ строки, сверять его с нужным порядковым номером вопроса и если истина - записать всю строку в массив, после чего редактировать ее, как угодно, и обратно положить на свое место.
Код:
	void EditQuestion()
	{
		int QNumber;
		char *Question = new char[200];
		ifstream TFile("test.txt", ios::out);
		if (!TFile.is_open())
		{
			std::cerr<<"File Not Found!"<<endl;
		}
		cout<<"Enter number of question, to edit->";
		cin>>QNumber;
		while (Question[0]!=QNumber)
		{
			TFile.read(Question,sizeof(Question));
			TFile.getline(Question,sizeof(Question));
		}
		cout<<Question;
.........
	}
Чувствую нутром, что с циклом что-то не так, да и не уверен, что метод getline подходит.
Прошу помочь мне с решением. Заранее благодарен всем откликнувшимся.
KatCH вне форума Ответить с цитированием
Старый 28.11.2012, 09:27   #2
KatCH
Пользователь
 
Регистрация: 15.02.2010
Сообщений: 54
По умолчанию

Вообщем, все оказалось довольно просто:
Код:
	void EditQuestion()
	{
		char QNumber;//Question number of count
		string Question;
		string Line;
		bool ENDFIND=false;
		cout<<"Enter number of question, to edit->";
		cin>>QNumber;
		ifstream TFile("test.txt", ios::out);
		if (TFile.is_open())
		{
			while ( ENDFIND!=true )
			{
				getline (TFile,Question);
				if (Question[0]==QNumber)
				{
					ENDFIND=true;
					cout<<"This is question number "<<QNumber<<"->"<<Question<<", edited his??"<<endl;
					cout<<"Enter new question->"<<endl;
					cin>>Line;
					Question.replace(Question, Line);
.....
.....
.....
				}

			}
			TFile.close();
		}

		else cout << "Unable to open file";


	}
Тему можно закрывать.
KatCH вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перемещение курсора Painkiller_13 Общие вопросы Delphi 5 24.01.2012 17:50
Построчное перемещение курсора в текстовом файле [С++] Modo Помощь студентам 0 29.11.2010 20:43
Перемещение курсора SPQR10000 Общие вопросы Delphi 4 23.10.2010 17:27
Поиск данных в текстовом файле (в самом файле! а не в Memo и не загружая всю инфу из файла в одну строку glagoff Помощь студентам 1 05.05.2010 13:00
Перемещение курсора kykysya БД в Delphi 2 07.04.2009 20:33