#include <stdio.h>
#include <stdlib.h>
char * substr(const char * text, int beg, int end)
{
int i;
char *sub = 0;
int len = end - beg;
if(text)//Проверяем не пустой ли ввод
if(text + beg)//Проверяем существование в тексте позиции beg
if(0 < len)//Проверяем корректность параметров конец должен быть больше начала
if((sub = (char *)malloc(1 + len)))//Если end превосходит последнюю
//позицию текста ничего страшного выделим чуть больше памяти чем надо
{
//Примитивное компирование, даже текстовых библиотек не надо будет
for(i = beg; text[i] != '\0' && i < end; i++)
sub[i - beg] = text[i];
sub[i - beg] = '\0';//Ноль терминатор вконце строки
}
return sub;
}
int main()
{
static char text[] = "abra kadabra";
printf("input : %s\n",text);
//К прмеру пусть будет подстрока с 5-го по 15-й символ
//кстати в text меньше чем 15 символов ну вот заодно и проверим
//корректность работы substr
printf("output: ");
char * sub = substr(text, 5 , 11);
if(sub)
{
printf("%s\n",sub);
free((void *)sub);
}
else
printf("Error substr\n");
getchar();
return 0;
}