83 lines
1.1 KiB
C++
83 lines
1.1 KiB
C++
#include "lc_global.h"
|
|
#include "lc_string.h"
|
|
|
|
char* lcstrcasestr(const char* s, const char* find)
|
|
{
|
|
char c, sc;
|
|
|
|
if ((c = *find++) != 0)
|
|
{
|
|
c = tolower((unsigned char)c);
|
|
const int len = (int)strlen(find);
|
|
do
|
|
{
|
|
do
|
|
{
|
|
if ((sc = *s++) == 0)
|
|
return (nullptr);
|
|
} while ((char)tolower((unsigned char)sc) != c);
|
|
} while (qstrnicmp(s, find, len) != 0);
|
|
s--;
|
|
}
|
|
return ((char *)s);
|
|
}
|
|
|
|
char* lcstrupr(char* string)
|
|
{
|
|
for (char* c = string; *c; c++)
|
|
*c = toupper(*c);
|
|
|
|
return string;
|
|
}
|
|
|
|
size_t lcstrcpy(char* dest, const char* source, size_t size)
|
|
{
|
|
if (size == 0)
|
|
return 0;
|
|
|
|
for (size_t i = 0; i < size; i++)
|
|
{
|
|
dest[i] = source[i];
|
|
|
|
if (source[i] == '\0')
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
|
|
dest[--size] = '\0';
|
|
|
|
return size;
|
|
}
|
|
|
|
size_t lcstrcat(char* dest, const char* source, size_t size)
|
|
{
|
|
char* d = dest;
|
|
const char* s = source;
|
|
size_t n = size;
|
|
size_t dlen;
|
|
|
|
while (n-- != 0 && *d != '\0')
|
|
d++;
|
|
|
|
dlen = d - dest;
|
|
n = size - dlen;
|
|
|
|
if (n == 0)
|
|
return(dlen + strlen(s));
|
|
|
|
while (*s != '\0')
|
|
{
|
|
if (n != 1)
|
|
{
|
|
*d++ = *s;
|
|
n--;
|
|
}
|
|
s++;
|
|
}
|
|
|
|
*d = '\0';
|
|
|
|
return (dlen + (s - source));
|
|
}
|