ReactOS 0.4.16-dev-736-g28b802b
string.h
Go to the documentation of this file.
1//
2// string.h
3//
4// Copyright (c) Microsoft Corporation. All rights reserved.
5//
6// The C Standard Library <string.h> header.
7//
8#pragma once
9#ifndef _INC_STRING // include guard for 3rd party interop
10#define _INC_STRING
11
12#include <corecrt.h>
13#include <corecrt_memory.h>
14#include <corecrt_wstring.h>
15#include <vcruntime_string.h>
16
17#ifndef __midl
18
19#pragma warning(push)
20#pragma warning(disable: _UCRT_DISABLED_WARNINGS)
22
24
25
26
27#define _NLSCMPERROR _CRT_INT_MAX // currently == INT_MAX
28
29#if __STDC_WANT_SECURE_LIB__
30
35 _In_z_ char const* _Source
36 );
37
42 _In_z_ char const* _Source
43 );
44
48 _In_ size_t _SizeInBytes,
49 _In_ int _ErrorNumber);
50
57 );
58
65 );
66
70 _In_z_ char const* _Delimiter,
72 );
73
74#endif // __STDC_WANT_SECURE_LIB__
75
78 _In_ void const* _Src,
79 _In_ int _Val,
80 _In_ size_t _MaxCount
81 );
82
85 char, _Destination,
86 _In_z_ char const*, _Source
87 )
88
89#ifndef RC_INVOKED
90
93 _Inout_updates_z_(_String_length_(_Destination) + _String_length_(_Source) + 1), char, _Destination,
94 _In_z_ char const*, _Source
95 )
96
97#endif // RC_INVOKED
98
101 _In_z_ char const* _Str1,
102 _In_z_ char const* _Str2
103 );
104
107 _In_z_ char const* _String1,
108 _In_z_ char const* _String2
109 );
110
113 _In_z_ char const* _String1,
114 _In_z_ char const* _String2
115 );
116
119 _In_z_ char const* _String1,
120 _In_z_ char const* _String2,
122 );
123
127 _In_z_ char const*, _Source
128 )
129
132 _Out_writes_z_(_String_length_(_Source) + 1), char, _Destination,
133 _In_z_ char const*, _Source
134 )
135
138 _In_z_ char const* _Str,
139 _In_z_ char const* _Control
140 );
141
142#if defined _DEBUG && defined _CRTDBG_MAP_ALLOC
143 #pragma push_macro("_strdup")
144 #undef _strdup
145#endif
146
149 _In_opt_z_ char const* _Source
150 );
151
152#if defined _DEBUG && defined _CRTDBG_MAP_ALLOC
153 #pragma pop_macro("_strdup")
154#endif
155
157_Success_(return != 0)
160 _In_opt_z_ char const* _ErrorMessage
161 );
162
166 _In_ size_t _SizeInBytes,
167 _In_opt_z_ char const* _ErrorMessage
168 );
169
172 char, _Buffer,
173 _In_opt_z_ char const*, _ErrorMessage
174 )
175
179 _In_ int _ErrorMessage
180 );
181
184 char, _Buffer,
185 _In_ int, _ErrorMessage
186 )
187
190 _In_z_ char const* _String1,
192 );
193
196 _In_z_ char const* _String1,
197 _In_z_ char const* _String2
198 );
199
202 _In_z_ char const* _String1,
203 _In_z_ char const* _String2,
205 );
206
209 _In_z_ char const* _String1,
210 _In_z_ char const* _String2,
212 );
213
216 _In_z_ char const* _Str
217 );
218
222 _In_ size_t _Size
223 );
224
227 _Prepost_z_ char, _String
228 )
229
233 )
234
238 _In_ size_t _Size,
240 );
241
244 _Prepost_z_ char, _String,
246 )
247
253 )
254
259 _In_ size_t, _Count
260 )
261
267 _In_ size_t, _Count
268 )
269
272 _In_reads_or_z_(_MaxCount) char const* _Str1,
273 _In_reads_or_z_(_MaxCount) char const* _Str2,
274 _In_ size_t _MaxCount
275 );
276
279 _In_reads_or_z_(_MaxCount) char const* _String1,
281 _In_ size_t _MaxCount
282 );
283
286 _In_reads_or_z_(_MaxCount) char const* _String1,
288 _In_ size_t _MaxCount,
290 );
291
294 _In_reads_or_z_(_MaxCount) char const* _String1,
296 _In_ size_t _MaxCount
297 );
298
301 _In_reads_or_z_(_MaxCount) char const* _String1,
303 _In_ size_t _MaxCount,
305 );
306
309 _In_reads_or_z_(_MaxCount) char const* _String1,
311 _In_ size_t _MaxCount
312 );
313
316 _In_reads_or_z_(_MaxCount) char const* _String1,
318 _In_ size_t _MaxCount,
320 );
321
324 _In_ size_t _Count
325 );
326
329 char, _Destination,
331 _In_ size_t, _Count
332 )
333
339 _In_ size_t, _Count
340 )
341
344 _MaxCount > _String_length_(_String),
345 _Post_satisfies_(return == _String_length_(_String))
346)
347_When_(
348 _MaxCount <= _String_length_(_String),
350)
354 );
355
356#if __STDC_WANT_SECURE_LIB__ && !defined __midl
357
359 _When_(
360 _MaxCount > _String_length_(_String),
361 _Post_satisfies_(return == _String_length_(_String))
362 )
363 _When_(
364 _MaxCount <= _String_length_(_String),
365 _Post_satisfies_(return == _MaxCount)
366 )
367 static __inline size_t __CRTDECL strnlen_s(
368 _In_reads_or_z_(_MaxCount) char const* _String,
369 _In_ size_t _MaxCount
370 )
371 {
372 return _String == 0 ? 0 : strnlen(_String, _MaxCount);
373 }
374
375#endif
376
380 _In_ size_t _SizeInBytes,
381 _In_ int _Value,
382 _In_ size_t _MaxCount
383 );
384
388 _In_ int, _Value,
389 _In_ size_t, _Count
390 )
391
397 _In_ size_t, _Count
398 )
399
402 _In_z_ char const* _Str,
403 _In_z_ char const* _Control
404 );
405
407 _Inout_z_ char* _Str
408 );
409
412 _Inout_updates_z_(_DestinationSize) char* _Destination,
413 _In_ size_t _DestinationSize,
414 _In_ int _Value
415 );
416
420 _In_ int, _Value
421 )
422
425 _Inout_z_, char, _Destination,
426 _In_ int, _Value
427 )
428
431 _In_z_ char const* _Str,
432 _In_z_ char const* _Control
433 );
434
438 _In_z_ char const* _Delimiter
439 );
440
444 _In_ size_t _Size
445 );
446
449 _Prepost_z_ char, _String
450 )
451
454 _Inout_z_, char, _String
455 )
456
460 _In_ size_t _Size,
462 );
463
466 _Prepost_z_ char, _String,
468 )
469
473 _Inout_z_, char, _String,
475 )
476
481 _In_z_ char const* _Source,
483 );
484
489 _In_z_ char const* _Source,
492 );
493
494
495
496#ifdef __cplusplus
497extern "C++"
498{
500 inline char* __CRTDECL strchr(_In_z_ char* const _String, _In_ int const _Ch)
501 {
502 return const_cast<char*>(strchr(static_cast<char const*>(_String), _Ch));
503 }
504
506 inline char* __CRTDECL strpbrk(_In_z_ char* const _String, _In_z_ char const* const _Control)
507 {
508 return const_cast<char*>(strpbrk(static_cast<char const*>(_String), _Control));
509 }
510
512 inline char* __CRTDECL strrchr(_In_z_ char* const _String, _In_ int const _Ch)
513 {
514 return const_cast<char*>(strrchr(static_cast<char const*>(_String), _Ch));
515 }
516
518 inline char* __CRTDECL strstr(_In_z_ char* const _String, _In_z_ char const* const _SubString)
519 {
520 return const_cast<char*>(strstr(static_cast<char const*>(_String), _SubString));
521 }
522}
523#endif // __cplusplus
524
525
526
527#if defined(_CRT_INTERNAL_NONSTDC_NAMES) && _CRT_INTERNAL_NONSTDC_NAMES
528
529 #pragma push_macro("strdup")
530 #undef strdup
532 _ACRTIMP char* __cdecl strdup(
533 _In_opt_z_ char const* _String
534 );
535 #pragma pop_macro("strdup")
536
537 // Declarations of functions defined in oldnames.lib:
540 _In_z_ char const* _String1,
541 _In_z_ char const* _String2
542 );
543
546 _In_z_ char const* _String1,
547 _In_z_ char const* _String2
548 );
549
551 _ACRTIMP char* __cdecl strlwr(
552 _Inout_z_ char* _String
553 );
554
557 _In_reads_or_z_(_MaxCount) char const* _String1,
559 _In_ size_t _MaxCount
560 );
561
565 _In_ int _Value,
566 _In_ size_t _MaxCount
567 );
568
570 _ACRTIMP char* __cdecl strrev(
571 _Inout_z_ char* _String
572 );
573
575 char* __cdecl strset(
576 _Inout_z_ char* _String,
577 _In_ int _Value);
578
580 _ACRTIMP char* __cdecl strupr(
581 _Inout_z_ char* _String
582 );
583
584#endif // _CRT_INTERNAL_NONSTDC_NAMES
585
586
587
590#pragma warning(pop) // _UCRT_DISABLED_WARNINGS
591#endif // !__midl
592#endif // _INC_STRING
#define __inline
Definition: _wctype.cpp:15
#define __cdecl
Definition: accygwin.h:79
#define _stricmp
Definition: cat.c:22
return
Definition: dirsup.c:529
_Source
_Check_return_ _In_z_ wchar_t const _Inout_opt_ _Deref_prepost_opt_z_ wchar_t ** _Context
_String
_In_ _Value
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1)
Definition: corecrt.h:177
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_2(_ReturnType, _FuncName, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2)
Definition: corecrt.h:178
#define __DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_0(_ReturnType, _FuncName, _DstType, _Dst)
Definition: corecrt.h:176
_Check_return_ _Ret_maybenull_ _In_ size_t _Count
Definition: malloc.h:108
#define _strdup
Definition: debug_ros.c:7
#define _strnicmp(_String1, _String2, _MaxCount)
Definition: compat.h:23
#define stricmp(_String1, _String2)
Definition: compat.h:24
_Check_return_wat_ _CRTIMP errno_t __cdecl _strlwr_s(_Inout_updates_z_(size) char *str, _In_ size_t size)
Definition: stubs.c:511
_Check_return_wat_ _CRTIMP errno_t __cdecl _strset_s(_Inout_updates_z_(size) char *dst, _In_ size_t size, _In_ int val)
Definition: stubs.c:660
size_t rsize_t
Definition: stubs.c:780
_Check_return_wat_ _CRTIMP errno_t __cdecl _strupr_s(_Inout_updates_z_(size) char *str, _In_ size_t size)
Definition: stubs.c:673
_Check_return_wat_ _CRTIMP errno_t __cdecl _strerror_s(_Out_writes_z_(_SizeInBytes) char *buf, _In_ size_t sizeInBytes, _In_opt_z_ const char *errMsg)
Definition: stubs.c:857
_In_ _Pre_notnull_ _Buffer
Definition: stdlib.h:644
#define strcpy_s(d, l, s)
Definition: utility.h:200
#define strcoll
Definition: util.h:34
#define _Deref_prepost_opt_z_
Definition: ms_sal.h:1424
#define _Post_maybez_
Definition: ms_sal.h:1372
#define _Prepost_z_
Definition: no_sal2.h:510
#define _Out_writes_z_(s)
Definition: no_sal2.h:180
#define _Inout_
Definition: no_sal2.h:162
#define _Ret_maybenull_
Definition: no_sal2.h:328
#define _Out_writes_opt_(s)
Definition: no_sal2.h:226
#define _In_z_
Definition: no_sal2.h:164
#define _Check_return_
Definition: no_sal2.h:60
#define _In_opt_z_
Definition: no_sal2.h:218
#define _Post_z_
Definition: no_sal2.h:508
#define _Out_writes_bytes_opt_(s)
Definition: no_sal2.h:228
#define _Inout_updates_z_(s)
Definition: no_sal2.h:186
#define _In_reads_or_z_(s)
Definition: no_sal2.h:174
#define _Out_writes_(s)
Definition: no_sal2.h:176
#define _Post_satisfies_(e)
Definition: no_sal2.h:66
#define _In_
Definition: no_sal2.h:158
#define _In_opt_
Definition: no_sal2.h:212
#define _Inout_opt_z_
Definition: no_sal2.h:220
#define _In_range_(l, h)
Definition: no_sal2.h:368
#define _Inout_z_
Definition: no_sal2.h:166
#define _Ret_z_
Definition: no_sal2.h:306
#define _When_(c, a)
Definition: no_sal2.h:38
#define _CONST_RETURN
Definition: memory.h:16
_Check_return_ int __cdecl strcmp(_In_z_ const char *_Str1, _In_z_ const char *_Str2)
_CRT_RESTORE_GCC_WARNINGS _CRTIMP char *__cdecl _strrev(_Inout_z_ char *_Str)
_Check_return_ int __cdecl strncmp(_In_reads_or_z_(_MaxCount) const char *_Str1, _In_reads_or_z_(_MaxCount) const char *_Str2, _In_ size_t _MaxCount)
_MaxCount
Definition: string.h:88
_Check_return_ _CRTIMP int __cdecl _stricmp_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_opt_ _locale_t _Locale)
Definition: stubs.c:485
_Check_return_ _CRTIMP char *__cdecl _strerror(_In_opt_z_ const char *_ErrMsg)
_Check_return_ _CRTIMP int __cdecl strcmpi(_In_z_ const char *_Str1, _In_z_ const char *_Str2)
_Check_return_ _CRTIMP int __cdecl _strcoll_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_opt_ _locale_t _Locale)
Definition: stubs.c:472
_Check_return_ _CRTIMP char *__cdecl strerror(_In_ int)
_Check_return_ _CRTIMP int __cdecl _stricoll_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_opt_ _locale_t _Locale)
Definition: stubs.c:498
_Check_return_ _CRTIMP int __cdecl _strcmpi(_In_z_ const char *_Str1, _In_z_ const char *_Str2)
_Check_return_ _CRTIMP int __cdecl _strnicoll_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale)
Definition: stubs.c:564
_CRTIMP char *__cdecl strupr(_Inout_z_ char *_Str)
_Check_return_opt_ _CRTIMP size_t __cdecl strxfrm(_Out_writes_opt_(_MaxCount) _Post_maybez_ char *_Dst, _In_z_ const char *_Src, _In_ size_t _MaxCount)
_In_ int _Val
Definition: string.h:107
_CRT_RESTORE_GCC_WARNINGS _Check_return_ _CRTIMP char *__cdecl strtok(_Inout_opt_z_ char *_Str, _In_z_ const char *_Delim)
_CRTIMP char *__cdecl strnset(_Inout_updates_z_(_MaxCount) char *_Str, _In_ int _Val, _In_ size_t _MaxCount)
_CRT_DISABLE_GCC_WARNINGS _Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strpbrk(_In_z_ const char *_Str, _In_z_ const char *_Control)
_Check_return_opt_ _CRTIMP size_t __cdecl _strxfrm_l(_Out_writes_opt_(_MaxCount) _Post_maybez_ char *_Dst, _In_z_ const char *_Src, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale)
_CRT_DISABLE_GCC_WARNINGS _Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strstr(_In_z_ const char *_Str, _In_z_ const char *_SubStr)
_Check_return_ _CRTIMP int __cdecl _strnicmp_l(_In_reads_or_z_(_MaxCount) const char *_Str1, _In_reads_or_z_(_MaxCount) const char *_Str2, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale)
_Check_return_ _CRTIMP int __cdecl _strncoll_l(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_ size_t _MaxCount, _In_opt_ _locale_t _Locale)
Definition: stubs.c:536
_CRTIMP char *__cdecl strlwr(_Inout_z_ char *_Str)
_Size
Definition: string.h:101
_Check_return_ _CRTIMP int __cdecl _strncoll(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_ size_t _MaxCount)
_Check_return_ wchar_t _Ch
Definition: string.h:697
_CRT_DISABLE_GCC_WARNINGS _Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strchr(_In_z_ const char *_Str, _In_ int _Val)
_Check_return_ _CRTIMP char *__cdecl strdup(_In_opt_z_ const char *_Src)
_Check_return_ _CRTIMP size_t __cdecl strspn(_In_z_ const char *_Str, _In_z_ const char *_Control)
_CRT_RESTORE_GCC_WARNINGS _CRT_DISABLE_GCC_WARNINGS _Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
_CRTIMP size_t __cdecl strlen(_In_z_ const char *_Str)
_CRTIMP void *__cdecl _memccpy(_Out_writes_bytes_opt_(_MaxCount) void *_Dst, _In_ const void *_Src, _In_ int _Val, _In_ size_t _MaxCount)
_Check_return_ _CRTIMP int __cdecl _strnicoll(_In_z_ const char *_Str1, _In_z_ const char *_Str2, _In_ size_t _MaxCount)
_CRTIMP char *__cdecl strset(_Inout_z_ char *_Str, _In_ int _Val)
_CRTIMP char *__cdecl strrev(_Inout_z_ char *_Str)
_Check_return_ _CRTIMP size_t __cdecl strcspn(_In_z_ const char *_Str, _In_z_ const char *_Control)
_Check_return_ _CRTIMP int __cdecl _stricoll(_In_z_ const char *_Str1, _In_z_ const char *_Str2)
_In_ size_t _SizeInBytes
Definition: time.h:146
_In_ size_t _In_z_ _Printf_format_string_ const char _In_ const struct tm _In_opt_ _locale_t _Locale
Definition: time.h:159
_Check_return_ _In_z_ char const * _Delimiter
Definition: string.h:439
_strlwr_s_l
Definition: string.h:249
strncpy
Definition: string.h:335
_strlwr
Definition: string.h:231
strcat
Definition: string.h:92
_strupr_l
Definition: string.h:471
__EMPTY_DECLSPEC
Definition: string.h:92
_Destination
Definition: string.h:93
_strset
Definition: string.h:424
_strupr
Definition: string.h:453
strcpy
Definition: string.h:131
_In_opt_ _Locale _Success_(return< _MaxCount) _Check_return_opt_ _ACRTIMP size_t __cdecl strxfrm(_Out_writes_opt_(_MaxCount) _Post_maybez_ char *_Destination
_In_opt_ _Locale strncat
Definition: string.h:263
__RETURN_POLICY_DST
Definition: string.h:92
_ACRTIMP
Definition: string.h:231
_ACRTIMP size_t __cdecl __strncnt(_In_reads_or_z_(_Count) char const *_String, _In_ size_t _Count)
strncpy_s
Definition: string.h:335
_strnset_s
Definition: string.h:393
_In_opt_ _Locale strncat_s
Definition: string.h:263
_In_z_ char const * _String2
Definition: string.h:192
_strlwr_l
Definition: string.h:249
_strnset
Definition: string.h:393
_strupr_s_l
Definition: string.h:471
int CDECL strcat_s(char *dst, size_t elem, const char *src)
Definition: string.c:40
int CDECL strerror_s(char *buffer, size_t numberOfElements, int errnum)
Definition: strerror.c:100
size_t __cdecl strnlen(char const *const string, size_t const maximum_count)
Definition: strnlen.cpp:202
char *CDECL strtok_s(char *str, const char *delim, char **ctx)
Definition: strtok_s.c:9
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1)
Definition: corecrt.h:845
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1)
Definition: corecrt.h:1904
#define _Check_return_opt_
Definition: corecrt.h:224
#define _CRT_INT_MAX
Definition: corecrt.h:279
#define __DEFINE_CPP_OVERLOAD_STANDARD_NFUNC_0_2_EX(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SecureFuncName, _SecureDstType, _SalAttributeDst, _DstType, _Dst, _TType1, _TArg1, _TType2, _TArg2)
Definition: corecrt.h:1945
#define _CRT_NONSTDC_DEPRECATE(_NewName)
Definition: corecrt.h:439
#define __DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_0(_ReturnType, _ReturnPolicy, _DeclSpec, _FuncName, _SalAttributeDst, _DstType, _Dst)
Definition: corecrt.h:842
#define _CRTALLOCATOR
Definition: corecrt.h:167
#define _UCRT_DISABLE_CLANG_WARNINGS
Definition: corecrt.h:109
#define _UCRT_RESTORE_CLANG_WARNINGS
Definition: corecrt.h:117
#define _Check_return_wat_
Definition: corecrt.h:230
int errno_t
Definition: corecrt.h:615
#define _CRT_END_C_HEADER
Definition: vcruntime.h:42
#define _CRT_BEGIN_C_HEADER
Definition: vcruntime.h:40
#define _CRT_INSECURE_DEPRECATE(_Replacement)
Definition: vcruntime.h:99
#define strnicmp
Definition: xmlstorage.h:206
#define __CRTDECL
Definition: yvals.h:17
#define const
Definition: zconf.h:233