[SDK:CRT] Implement wcscpy_s() and wcscat_s()
This commit is contained in:
parent
b0b7be0837
commit
67ab5dc5d4
@ -26,7 +26,7 @@ wcslen (
|
|||||||
ptr = str;
|
ptr = str;
|
||||||
while (*ptr++);
|
while (*ptr++);
|
||||||
|
|
||||||
return (const char*)ptr - (const char*)str - sizeof(wchar_t);
|
return ptr - str;
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t
|
size_t
|
||||||
@ -39,9 +39,12 @@ wcsnlen (
|
|||||||
size_t len;
|
size_t len;
|
||||||
|
|
||||||
len = 0;
|
len = 0;
|
||||||
while (len < maxlen && str[len++]);
|
while (len < maxlen && *str) {
|
||||||
|
len++;
|
||||||
|
str++;
|
||||||
|
}
|
||||||
|
|
||||||
return len - sizeof(wchar_t);
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
@ -127,3 +130,41 @@ wcsstr (
|
|||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wchar_t *
|
||||||
|
wcscpy_s (
|
||||||
|
wchar_t *dest,
|
||||||
|
size_t maxlen,
|
||||||
|
const wchar_t *src
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
for (size_t i = 0; i < maxlen; i++, src++) {
|
||||||
|
dest[i] = *src;
|
||||||
|
|
||||||
|
if (!*src) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
|
||||||
|
wchar_t *
|
||||||
|
wcscat_s (
|
||||||
|
wchar_t *dest,
|
||||||
|
size_t maxlen,
|
||||||
|
const wchar_t *src
|
||||||
|
)
|
||||||
|
|
||||||
|
{
|
||||||
|
for (size_t i = wcsnlen(dest, maxlen); i < maxlen; i++, src++) {
|
||||||
|
dest[i] = *src;
|
||||||
|
|
||||||
|
if (!*src) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return dest;
|
||||||
|
}
|
||||||
|
@ -31,6 +31,8 @@ int wcscmp(const wchar_t* s1, const wchar_t* s2);
|
|||||||
int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n);
|
int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n);
|
||||||
wchar_t *wcschr(const wchar_t *wcs, wchar_t wc);
|
wchar_t *wcschr(const wchar_t *wcs, wchar_t wc);
|
||||||
wchar_t *wcsstr(const wchar_t *haystack, const wchar_t *needle);
|
wchar_t *wcsstr(const wchar_t *haystack, const wchar_t *needle);
|
||||||
|
wchar_t *wcscpy_s(wchar_t *dest, size_t maxlen, const wchar_t *src);
|
||||||
|
wchar_t *wcscat_s(wchar_t *dest, size_t maxlen, const wchar_t *src);
|
||||||
|
|
||||||
wchar_t *wmemset(wchar_t *dest, wchar_t c, size_t count);
|
wchar_t *wmemset(wchar_t *dest, wchar_t c, size_t count);
|
||||||
wchar_t *wmemcpy(wchar_t *dest, const wchar_t *src, size_t count);
|
wchar_t *wmemcpy(wchar_t *dest, const wchar_t *src, size_t count);
|
||||||
|
Loading…
Reference in New Issue
Block a user