NightLocke Ответов: 1

Как создать функцию, которая возвращает подстроку в языке Си?


В течение последнего дня я безуспешно пытался исправить этот код. Я пытаюсь создать простую функцию, которая берет две строки и находит подстроку между ними (иголка и стог сена). Кто-нибудь может мне помочь??

Что я уже пробовал:

char* stringString(char *needle, char *haystack) {

	int i, j;
	char *sub;
	for (i = 0; i < strlen(haystack); i++) {
		sub = &haystack[i];
		for (j = 0; j < strlen(needle); j++) {
			
			if (haystack[i + j] != needle[j]) {
				continue;
			}
			
			if (needle[j] == 0) {
				return sub;
			}
			else
				i = i - j;
			if (haystack[i] == NULL)
				i--;
		
		}
		return sub;
	}
	return -1;
	}

Afzaal Ahmad Zeeshan

И что в этом плохого?

NightLocke

Он печатает всю строку, а не только подстроку...

PIEBALDconsult

Это то, что вы сказали ему сделать. И ваш код также очень неэффективен.
Алгоритм художника шлемиля ... https://www.joelonsoftware.com/2001/12/11/back-to-basics/

1 Ответов

Рейтинг:
0

PIEBALDconsult

Вы пытаетесь изобрести это колесо?

strstr - ссылка на C++ [^]