These routines operate on null-terminated single-byte character, wide-character, and multibyte-character strings. Use the buffer-manipulation routines, described in Buffer Manipulation, to work with character arrays that do not end with a null character.
String-Manipulation Routines
| Routine | Use | .NET Framework equivalent | 
|---|---|---|
| strcoll, wcscoll, _mbscoll, _strcoll_l, _wcscoll_l, _mbscoll_l, _stricoll, _wcsicoll, _mbsicoll, _stricoll_l, _wcsicoll_l, _mbsicoll_l, _strncoll, _wcsncoll, _mbsncoll, _strncoll_l, _wcsncoll_l, _mbsncoll_l, _strnicoll, _wcsnicoll, _mbsnicoll, _strnicoll_l, _wcsnicoll_l, _mbsnicoll_l | Compare two character strings using code page information (_mbsicoll and _mbsnicoll are case-insensitive) | |
| Move string pointer back one character | Not applicable. To call the standard C function, use PInvoke. For more information, see Platform Invoke Examples. | |
| Advance string pointer by one character | Not applicable. | |
| Append, at most, first n bytes of one character string to another | Not applicable. | |
| Compare first n bytes of two character strings | Not applicable. | |
| _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l, _strncnt, _wcsncnt | Return number of character bytes within supplied character count | Not applicable. | 
| Copy n bytes of string | Not applicable. | |
| Compare n bytes of two character strings, ignoring case | Not applicable. | |
| Set first n bytes of character string to specified character | Not applicable. | |
| _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l, _strncnt, _wcsncnt | Return number of characters within supplied byte count | Not applicable. | 
| Find next character in string | Not applicable. | |
| Advance string pointer by n characters | Not applicable. | |
| Return pointer to first character in given string that is not in another given string | Not applicable. | |
| Return the number of characters in a formatted string | Not applicable. | |
| _snscanf, _snscanf_l, _snwscanf, _snwscanf_l, _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l | Read formatted data of a specified length from the standard input stream. | Not applicable. | 
| sscanf, _sscanf_l, swscanf, _swscanf_l, sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l | Read formatted data of a specified length from the standard input stream. | Not applicable. | 
| sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l, sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l, _sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l | Write formatted data to a string | |
| Append one string to another | ||
| Find first occurrence of specified character in string | ||
| Compare two strings | ||
| strcoll, wcscoll, _mbscoll, _strcoll_l, _wcscoll_l, _mbscoll_l, _stricoll, _wcsicoll, _mbsicoll, _stricoll_l, _wcsicoll_l, _mbsicoll_l, _strncoll, _wcsncoll, _mbsncoll, _strncoll_l, _wcsncoll_l, _mbsncoll_l, _strnicoll, _wcsnicoll, _mbsnicoll, _strnicoll_l, _wcsnicoll_l, _mbsnicoll_l | Compare two strings using current locale code page information (_stricoll, _wcsicoll, _strnicoll, and _wcsnicoll are case-insensitive) | |
| Copy one string to another | ||
| Find first occurrence of character from specified character set in string | ||
| Duplicate string | ||
| strerror, _strerror, _wcserror, __wcserror, strerror_s, _strerror_s, _wcserror_s, __wcserror_s | Map error number to message string | |
| Format date-and-time string | ||
| _stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l | Compare two strings without regard to case | |
| strlen, strlen_l, wcslen, wcslen_l, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l, strnlen, strnlen_s, strnlen_l, wcsnlen, wcsnlen_s, wcsnlen_l, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l | Find length of string | |
| _strlwr, _wcslwr, _mbslwr, _strlwr_l, _wcslwr_l, _mbslwr_l, _strlwr_s, _strlwr_s_l, _mbslwr_s, _mbslwr_s_l, _wcslwr_s, _wcslwr_s_l | Convert string to lowercase | |
| strncat, _strncat_l, wcsncat, wcsncat_l, _mbsncat _mbsncat_l, strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l | Append characters of string | |
| Compare characters of two strings | ||
| strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l, strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l | Copy characters of one string to another | |
| _strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l | Compare characters of two strings without regard to case | |
| _strnset, _strnset_l, _wcsnset, _wcsnset_l, _mbsnset, _mbsnset_l | Set first n characters of string to specified character | |
| Find first occurrence of character from one string in another string | ||
| Find last occurrence of given character in string | ||
| Reverse string | Not applicable. | |
| Set all characters of string to specified character | Not applicable. | |
| Find first substring from one string in another string | ||
| Find first occurrence of specified string in another string | ||
| strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l, strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l | Find next token in string | Not applicable. | 
| _strupr, _strupr_l, _mbsupr, _mbsupr_l, _wcsupr_l, _wcsupr, _strupr_s, _strupr_s_l, _mbsupr_s, _mbsupr_s_l, _wcsupr_s, _wcsupr_s_l | Convert string to uppercase | |
| Transform string into collated form based on locale-specific information | Not applicable. | |
| vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l, vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l, _vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l | Write formatted output using a pointer to a list of arguments | |
| vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l, vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l | Write formatted output using a pointer to a list of arguments |