Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия | |||
| works:programmer:cpp:c-strtextafter [2026/08/10 10:12] – Eugene | works:programmer:cpp:c-strtextafter [2026/08/10 10:24] (текущий) – Eugene | ||
|---|---|---|---|
| Строка 6: | Строка 6: | ||
| #include < | #include < | ||
| #include < | #include < | ||
| - | |||
| - | /** Cтарая версия с избыточной итерацией по символам // | ||
| - | bool strtextafter(const char *haystack, const char *needle, char **result) { | ||
| - | size_t hlen = strlen(haystack); | ||
| - | size_t nlen = strlen(needle); | ||
| - | *result = NULL; | ||
| - | if (nlen > hlen) { | ||
| - | return false; | ||
| - | } | ||
| - | if (strncmp(haystack, | ||
| - | return false; | ||
| - | } | ||
| - | *result = (char *) malloc((hlen - nlen + 1) * sizeof(char)); | ||
| - | if (*result == NULL) { | ||
| - | return false; | ||
| - | } | ||
| - | haystack += nlen; | ||
| - | char *dest = *result; | ||
| - | while (*haystack) { | ||
| - | *dest++ = *haystack++; | ||
| - | } | ||
| - | *dest = ' | ||
| - | return true; | ||
| - | } | ||
| - | */ | ||
| bool strtextafter(const char *haystack, const char *needle, char **result) { | bool strtextafter(const char *haystack, const char *needle, char **result) { | ||
| Строка 58: | Строка 33: | ||
| free(result); | free(result); | ||
| } else { | } else { | ||
| - | printf(" | + | printf(" |
| } | } | ||
| return 0; | return 0; | ||
| } | } | ||
| + | |||
| + | /** Cтарая версия с избыточной итерацией по символам strlen и stricmp | ||
| + | bool strtextafter(const char *haystack, const char *needle, char **result) { | ||
| + | size_t hlen = strlen(haystack); | ||
| + | size_t nlen = strlen(needle); | ||
| + | *result = NULL; | ||
| + | if (nlen > hlen) { | ||
| + | return false; | ||
| + | } | ||
| + | if (strncmp(haystack, | ||
| + | return false; | ||
| + | } | ||
| + | *result = (char *) malloc((hlen - nlen + 1) * sizeof(char)); | ||
| + | if (*result == NULL) { | ||
| + | return false; | ||
| + | } | ||
| + | haystack += nlen; | ||
| + | char *dest = *result; | ||
| + | while (*haystack) { | ||
| + | *dest++ = *haystack++; | ||
| + | } | ||
| + | *dest = ' | ||
| + | return true; | ||
| + | } | ||
| + | */ | ||
| </ | </ | ||