#include "string_utils.h" #include #include #include char *trim_blank_left(char *str) { if (str == NULL) return NULL; while (*str != '\0' && isblank(*str)) str++; return str; } char *insert_into(char *dest, const char *src, size_t pos, size_t len) { size_t res_len = strlen(dest); size_t prefix_len = pos; size_t suffix_len = res_len - (pos + len); size_t src_len = strlen(src); size_t new_len = prefix_len + src_len + suffix_len; if (dest == NULL || src == NULL || pos + len > res_len) return NULL; if (res_len < new_len) { char *p = realloc(dest, new_len + 1); if (p == NULL) return NULL; // allocation failure dest = p; } memmove(dest + pos + src_len, dest + pos + len, suffix_len); memcpy(dest + pos, src, src_len); dest[new_len] = 0; if (res_len > new_len) return realloc(dest, new_len + 1); return dest; }