[SDK:CRT] Implement wcscpy_s() and wcscat_s()

This commit is contained in:
Quinn Stephens 2024-10-06 08:02:08 -04:00
parent b0b7be0837
commit 67ab5dc5d4
2 changed files with 46 additions and 3 deletions

View File

@ -26,7 +26,7 @@ wcslen (
ptr = str;
while (*ptr++);
return (const char*)ptr - (const char*)str - sizeof(wchar_t);
return ptr - str;
}
size_t
@ -39,9 +39,12 @@ wcsnlen (
size_t len;
len = 0;
while (len < maxlen && str[len++]);
while (len < maxlen && *str) {
len++;
str++;
}
return len - sizeof(wchar_t);
return len;
}
int
@ -127,3 +130,41 @@ wcsstr (
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;
}

View File

@ -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);
wchar_t *wcschr(const wchar_t *wcs, wchar_t wc);
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 *wmemcpy(wchar_t *dest, const wchar_t *src, size_t count);