ситуация такая, решил замутить себе либу с функцией 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++ под винду. буду признателен всем за помощь
зы: не строго судите, если не там разместил, имхо, как раз про указатели тема