12int64_t
strfind(
const char *src,
const char *search,
long n) {
13 if (!src || !search || n < 0)
15 size_t src_len = strlen(src);
16 if ((
size_t)n > src_len)
18 const char *start = src + n;
19 const char *found = strstr(start, search);
22 return (
long)(found - src);
25int64_t
substr(
char *dest, int64_t size,
const char *src, int64_t
pos, int64_t len) {
26 if (!dest || !src || size <= 0 ||
pos < 0 || len < 0)
28 size_t src_len = strlen(src);
29 if ((
size_t)
pos > src_len)
31 size_t copy_len = (size_t)len;
32 if (
pos + copy_len > src_len)
33 copy_len = src_len -
pos;
34 if (copy_len >= (
size_t)size)
35 copy_len = (size_t)size - 1;
36 memcpy(dest, src +
pos, copy_len);
37 dest[copy_len] =
'\0';
38 return (
long)copy_len;
44 size_t len = strlen(src);
45 if ((
size_t)
pos >= len)
47 char c = *(src +
pos);
54 const char *found = strstr(s,
substr);
57 return (int64_t)(found - s) + 1;
60char *
copy(
const char *s, int64_t index, int64_t count) {
61 if (!s || index < 1 || count < 0)
64 size_t s_len = strlen(s);
65 size_t start_pos = (size_t)index - 1;
66 if (start_pos > s_len)
69 size_t copy_len = (size_t)count;
70 if (start_pos + copy_len > s_len) {
71 copy_len = s_len - start_pos;
74 char *new_buf = (
char *)malloc(copy_len + 1);
78 memcpy(new_buf, s + start_pos, copy_len);
79 new_buf[copy_len] =
'\0';
83char *
insert(
const char *source,
const char *dest, int64_t index) {
84 if (!source || !dest || index < 1)
87 size_t source_len = strlen(source);
88 size_t dest_len = strlen(dest);
89 size_t insert_pos = (size_t)index - 1;
90 if (insert_pos > dest_len)
91 insert_pos = dest_len;
93 size_t new_len = source_len + dest_len;
94 char *new_buf = (
char *)malloc(new_len + 1);
98 memcpy(new_buf, dest, insert_pos);
99 memcpy(new_buf + insert_pos, source, source_len);
100 memcpy(new_buf + insert_pos + source_len, dest + insert_pos, dest_len - insert_pos);
102 new_buf[new_len] =
'\0';
106char *
delete_str(
const char *s, int64_t index, int64_t count) {
107 if (!s || index < 1 || count < 0)
110 size_t s_len = strlen(s);
111 size_t start_pos = (size_t)index - 1;
112 if (start_pos >= s_len) {
113 char *new_buf = (
char *)malloc(s_len + 1);
120 size_t del_count = (size_t)count;
121 if (start_pos + del_count > s_len) {
122 del_count = s_len - start_pos;
125 size_t new_len = s_len - del_count;
126 char *new_buf = (
char *)malloc(new_len + 1);
130 memcpy(new_buf, s, start_pos);
131 memcpy(new_buf + start_pos, s + start_pos + del_count, s_len - (start_pos + del_count));
132 new_buf[new_len] =
'\0';
137 char *buf = (
char *)malloc(21);
140 snprintf(buf, 21,
"%lld", value);
char * copy(const char *s, int64_t index, int64_t count)
int64_t strat(const char *src, int64_t pos)
char * insert(const char *source, const char *dest, int64_t index)
int64_t strtoint(const char *s)
char * delete_str(const char *s, int64_t index, int64_t count)
int64_t substr(char *dest, int64_t size, const char *src, int64_t pos, int64_t len)
int64_t pos(const char *substr, const char *s)
char * inttostr(int64_t value)
int64_t strfind(const char *src, const char *search, long n)