Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите задать массив слов, плиз... / 2 сообщений из 2, страница 1 из 1
09.07.2004, 10:33
    #32596750
C Lamer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите задать массив слов, плиз...
Господа! Помогите задать массив слов...
Функцией (своей) get_count_word() определяю кол-во слов в массиве
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
int get_count_word(char s[ 255 ]){
	int i, result= 0 ;
	for(i= 0 ;i<(abs(strlen(s)));i++){
		if(is_symbol(s[i])!= 1 ){
			result++;
		}
	}
	result++;
	return result;
}
длину слова беру 128
надо создать str_out не просто определением типа
Код: plaintext
char str_out[ 20 ][ 128 ];

где 20 - число слов в массиве строк, а динамически в зависимости от полученного значения...

Код: plaintext
1.
2.
3.
4.
5.
6.
int main()
{
	char **str_out;
	//char str_out[ 20 ][ 128 ];
	i= get_count_word(str_in);
	str_out =  new char [i][ 128 ]; 

среда VC++6, на сях начал писать совсем не давно
...
Рейтинг: 0 / 0
09.07.2004, 12:07
    #32596974
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите задать массив слов, плиз...
для разбора лучше пользоваться strtok()

для динамического расширения
я бы, если не критично, использовал stl

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
#icnlude <vector>
using namespace std;

vector<char*> vText;

//add
{
char *psz = new char[iSize];
strcpy(psz,szText);
vText.push_back(psz);
}
или можно организовать свой одно-, двухсвязный список.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
class TextItem
{
char *psz;
TextItem* next;
TextItem* prev;
}


TextItem *pHead = NULL;

// add
TextItem *pTail = pHead;
if(pTail)
{
while(pTail.next)
{
 pTail = pTail.next;
}
pTail.next = new TextItem;
pTail = pTail.next;
pTail.psz = new char[size];
strcpy(pTail.psz, szText);
pTail.next = NULL;
}
else
{
TextItem *pHead = new TextItem
pHead.psz = new char[size];
strcpy(pHead.psz, szText);
pHead.next = NULL;
}
или делать перевыделение памяти.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
int iSize =  20 ;// size
int iCur = - 1 ;// current index
char** ppsz;

ppsz = new char*[iSize];
iCur++;

// add
ppsz[iCur] = new char[size];
iCur++;
if(iCur==iSize) // need more
{
ppszn = new char[iSize+ 20 ];
memcpy(ppszn,ppsz,iSize*sizeof(long));
iSzie += 20 ;
}
удаление сами :)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите задать массив слов, плиз... / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]