Цитата(Voldemar2004 @ 3.6.2006, 12:45 ) | | Как думаете, есть еще недочеты? |
Компилировать я не пробовал, но вот, что бросается в глаза...
(строка 9) for(i; a[i] == ' '; i++) {;} Зачем нужно выделенное? Это, конечно, не ошибка, но абсолютно бесполезно.
(11) const CutLenLeft = i; //надо const int CutLenLeft = i; Не забывай указывать тип, компиляторы строго придерживающиеся стандарта такое не скомпилируют.
(14) for(i=strlen(a); i--; i>0) Наверно, ты имел в виду вот так: for(i=strlen(a); i>0; i--) ;) Хотя более правильно будет так: for(i=strlen(a) - 1; i>=0; i--)
(37) delete[] b; Эта строчка никогда не выполнится. Да и в любом случае очищать память должна вызывающая сторона.
Для случая, когда length равно нулю, и блок if не выполняется, нет соответствующего return.
Память, выделенная для новой строки, не очищается, надо сделать как-то так:
| Код | char* s = NoSpace(" Hello, World! "); cout << s; delete[] s;
|
Цитата(Voldemar2004 @ 3.6.2006, 12:45 ) | | зачем круглые скобочки после переопределения размера массива? |
По идее они должны обнулять массив. Хотя старые компиляторы могут не знать про такой синтаксис. Это можно переписать вот так:
| Код | if (s[i] == 0) { char* t = new char[1]; t[0] = 0; return t; }
|
Цитата(Voldemar2004 @ 3.6.2006, 12:45 ) | | если я возвращу такое значение то компилятор цепляет мусор |
У меня, вроде, правильно отрабатывает. |