#include <stdio.h>
#include <stdlib.h>
char *sub;
char * substr(const char * text, int beg, int end)
{
int i;
if(sub)
free((void *)sub);
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);
else
printf("Error substr\n");
sub = substr(text, 7 , 9);
if(sub)
printf("%s\n",sub);
else
printf("Error substr\n");
getchar();
return 0;
}