Показать сообщение отдельно
Старый 07.02.2007, 10:58     # 11
VanHelsing
Junior Member
 
Аватар для VanHelsing
 
Регистрация: 18.04.2005
Сообщения: 157

VanHelsing Реально крут(а)VanHelsing Реально крут(а)VanHelsing Реально крут(а)VanHelsing Реально крут(а)
ситуация такая, решил замутить себе либу с функцией split (стандартные не предлагать ).
сама функция:
Код:
char ** _ARRAY;

char ** split(char _SPLITTER, char * _STRING_TO_SPLIT) {
	int _STRING_SIZE=0;
	int _LINES_QUANTITY=0;
	int _CHARS_IN_LINE=0;
	int _MOST_LONG_LINE=0;

	while(_STRING_TO_SPLIT[_STRING_SIZE]!='\0') {

		_CHARS_IN_LINE++;

		if(_STRING_TO_SPLIT[_STRING_SIZE]==_SPLITTER) {
			_CHARS_IN_LINE=0;
			_LINES_QUANTITY++;
		}

		if(_MOST_LONG_LINE<_CHARS_IN_LINE) {
			_MOST_LONG_LINE=_CHARS_IN_LINE;
		}
		_STRING_SIZE++;
	}

	int _CURRENT_LINE_NUM;
	_ARRAY=new char * [_LINES_QUANTITY];
	for(_CURRENT_LINE_NUM=0;_CURRENT_LINE_NUM<_LINES_QUANTITY;_CURRENT_LINE_NUM++) {
		_ARRAY[_CURRENT_LINE_NUM]=new char [_MOST_LONG_LINE];
	}

	int _CURRENT_CHAR_IN_LINE;
	int _CURRENT_CHAR_IN_STRING=0;

	for(_CURRENT_LINE_NUM=0;_CURRENT_LINE_NUM<_LINES_QUANTITY;_CURRENT_LINE_NUM++) {
		for(_CURRENT_CHAR_IN_LINE=0;_CURRENT_CHAR_IN_LINE<_MOST_LONG_LINE;_CURRENT_CHAR_IN_LINE++) {


			_ARRAY[_CURRENT_LINE_NUM][_CURRENT_CHAR_IN_LINE]=0x00;
		}
	}

	for(_CURRENT_LINE_NUM=0;_CURRENT_LINE_NUM<_LINES_QUANTITY;_CURRENT_LINE_NUM++) {
		for(_CURRENT_CHAR_IN_LINE=0;_CURRENT_CHAR_IN_LINE<_MOST_LONG_LINE;_CURRENT_CHAR_IN_LINE++) {

			if(_STRING_TO_SPLIT[_CURRENT_CHAR_IN_STRING]==_SPLITTER) {

				_CURRENT_CHAR_IN_STRING++;
				break;
			}

			_ARRAY[_CURRENT_LINE_NUM][_CURRENT_CHAR_IN_LINE]=_STRING_TO_SPLIT[_CURRENT_CHAR_IN_STRING];
			_CURRENT_CHAR_IN_STRING++;
		}
	}
}
есть массив buffer представляющий из себя текстовый файл. надо, что бы функция вызывалась так
Код:
char ** db;
db=split('\n', buffer);
и что бы потом можно было работать с массивом db как с одномерным. что бы db[0] была первая строка! файла, db[100] 99-ая строка файла etc.

не могу понять почему не работает. если функция возвращает return ** _ARRAY; то вообще ругается invalid conversion from `char' to `char**'

компилятор g++ под винду. буду признателен всем за помощь

зы: не строго судите, если не там разместил, имхо, как раз про указатели тема
__________________

Последний раз редактировалось VanHelsing; 07.02.2007 в 11:01.
VanHelsing вне форума