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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.01.2010, 18:10   #1
NopeR
Новичок
Джуниор
 
Аватар для NopeR
 
Регистрация: 17.01.2010
Сообщений: 2
По умолчанию Посмотрите ошибки функции ...подробности внутри

Всем привет,
помогите додумать функцию, моих знаний пока что не хватает, я примерно знаю где ошибки,но исправить не получается..

Работа заключаеся в следущем: ранее я считал данные из файла(.тхт) и вывел их в EditBox, мне нужно разбить сроку на отдельные слова и потом поместить их в массив, с кторым далее буду работать и соотвественно также вывести этот массив в EditBox.
Функция, преведенная далее, будет формировать строки, в которых и будет выделять отдельно слова в подстроки. Грубо говоря у меня есть строка "фыва фыва фыва ...."(очень длинная), а мне нужно выделить каждое слово из нее и поместить в массив.

Код:
int CChartCPPDlg::GetDataFromWin(CString* pDataStr,CString CR_Str)
 {							
	int		i,k;
	WORD		iData;
	CString TmpStr;
	CString DataStr, NumStr;
	char	Ch;
	int		iWordsCnt;
	char	*p;

	int		LinesCnt = 0;
	int		CR_Pos   = 0;
	int		StrLength;
	int		CR_Length;

	DataFile.SeekToBegin();

	for (i = 0; i < MAX_WORDS; i++) OnScrDataW[i] = "0";// 

	StrLength = pDataStr->GetLength();	
	//CR_Length = CR_Str.GetLength();

	if (pDataStr->IsEmpty()) return 0;

	NumStr.Empty();									
	iWordsCnt = 0;

	for (i = 0; i < StrLength; i++)
	{
		//DataFile.Read(&Ch, 1);
		Ch = pDataStr->GetAt(i);					 
		if ((Ch == ' ') || (Ch == '\r') || (Ch == '\n'))		
		{
			if (!NumStr.IsEmpty())
			{
				DataFile.ReadString(DataStr);
			    p = strtok(????, " ");   //здесь запутался!!!!!!
				printf(p);
			  do
			  {
				p = strtok(NULL, " ");	
				if (p) printf("|%s",p);
                
				OnScrDataW[iWordsCnt]=p;			//				iWordsCnt++;

			  } while(p);

								//
			//	NumStr.Empty();	
			   
			
			}
		}
		else 
			NumStr= NumStr + Ch;
			   
	}
	return 	iWordsCnt;											
}//конец функции

Последний раз редактировалось MaTBeu; 18.01.2010 в 18:43.
NopeR вне форума Ответить с цитированием
Старый 19.01.2010, 17:20   #2
NopeR
Новичок
Джуниор
 
Аватар для NopeR
 
Регистрация: 17.01.2010
Сообщений: 2
По умолчанию

Спасиб за редактирование текста МаТВей.

Вообщем я решил переделать эту функцию, разбив на 3, так проще ошибки найти и отладить, так что чуть поже выложу ,если получится или ,если возникнут вопросы =))
NopeR вне форума Ответить с цитированием
Старый 19.01.2010, 18:46   #3
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Пример работы strtok
seps - символ-разделитель, в вашем случае пробел
token - текущее слово
string - исходная строка
Код:
token = strtok( string, seps ); //получаем первое слово
   while( token != NULL )
   {
      printf( " %s\n", token );
      //следующее слово
      token = strtok( NULL, seps );
   }
MaTBeu вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как в Делфи создать кнопочку "ОК". подробности внутри темы.... Кристина2008 Общие вопросы Delphi 2 09.12.2008 22:49
Посмотрите на мой АЖАКС не найду ошибки mogul82 JavaScript, Ajax 3 31.10.2008 22:13
Системы счисления помогите решить и посмотрите ошибки vdv08 Паскаль, Turbo Pascal, PascalABC.NET 1 13.05.2008 15:58
Пара задачек по Паскалю подробности внутри-> Nexx Помощь студентам 6 03.10.2007 09:08