[ create a new paste ] login | about

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

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


Output:
1
2
input : abra kadabra
output: kadabr


Create a new paste based on this one


Comments: