[ create a new paste ] login | about

Link: http://codepad.org/irb5mCfD    [ raw code | output | fork ]

C, pasted on Mar 6:
#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;
}


Output:
1
2
3
input : abra kadabra
output: kadabr
da


Create a new paste based on this one


Comments: