alesha
Зарегистрирован: 12.11.2004 Сообщения: 159
|
Добавлено: Ср Ноя 23 2005 18:16 Заголовок сообщения: Нужна функция или код С++ |
|
|
Всем привет!
Нужна стандартная функция или самописная, которая бы возвращала кусок строки str от символа N до символа N1...
вот это почему-то не работает
char *TFormMain::StrNcopy(char *str, int SourceN, int DestN){
char *str1;
for(int j = SourceN; j <= DestN ; j++ )
{ str1[j - SourceN] = str[j]; }
return str1;
} |
|
adonin
Зарегистрирован: 11.10.2005 Сообщения: 35
|
Добавлено: Чт Ноя 24 2005 10:12 Заголовок сообщения: |
|
|
Конечно не будет работать:
Ты объявил переменную "Указатель на char" Но он ни на что не указывает Забыл выделить память под строку (см. malloc() )
Лучше делать так:
Код: |
#include <malloc.h>
void StrNcopy(char *str, char ** DestStr, int SourceN, int DestN)
{
for(int j = SourceN; j <= DestN ; j++ )
{
(*DestStr)[j - SourceN] = str[j];
}
(*DestStr)[j - SourceN]=0; // Завершение строки
}
void main()
{
char S[]="Test Of Function";
char *D;
D=(char *)malloc(20); // В главной функции выделяй память, сколько тебе нужно, не забывай потом освобождать
char * SS;
StrNcopy(S,&D,2,4); // Результат возвращается в D
free(D);
}
|
Если будешь обьявлять char D[100] в функции, то место под этот массив выделяется в стеке. Поэтому никто не гарантирует, что следующий вызов функции не затрёт результат
Можно воспользоваться классом MFC CString, там уже всё реализовано |
|