?? strupr.c
字號:
/***
*strupr.c - routine to map lower-case characters in a string to upper-case
*
* Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
*
*Purpose:
* Converts all the lower case characters in string to upper case
* in place.
*
*******************************************************************************/
#include <cruntime.h>
#include <string.h>
#ifdef _WIN32
#include <malloc.h>
#include <locale.h>
#include <setlocal.h>
#include <limits.h> /* for INT_MAX */
#include <mtdll.h>
#include <awint.h>
#include <dbgint.h>
#endif /* _WIN32 */
/***
*char *_strupr(string) - map lower-case characters in a string to upper-case
*
*Purpose:
* _strupr() converts lower-case characters in a null-terminated string
* to their upper-case equivalents. Conversion is done in place and
* characters other than lower-case letters are not modified.
*
* In the C locale, this function modifies only 7-bit ASCII characters
* in the range 0x61 through 0x7A ('a' through 'z').
*
* If the locale is not the 'C' locale, MapStringW() is used to do
* the work. Assumes enough space in the string to hold result.
*
*Entry:
* char *string - string to change to upper case
*
*Exit:
* input string address
*
*Exceptions:
* The original string is returned unchanged on any error.
*
*******************************************************************************/
char * __cdecl _strupr (
char * string
)
{
#if defined (_WIN32)
int dstlen; /* len of dst string, with null */
unsigned char *dst = NULL; /* wide version of string in alternate case */
#if defined (_MT)
int local_lock_flag;
#endif /* defined (_MT) */
if (__lc_handle[LC_CTYPE] == _CLOCALEHANDLE)
{
char *cp; /* traverses string for C locale conversion */
for (cp = string; *cp; ++cp)
{
if ('a' <= *cp && *cp <= 'z')
*cp += 'A' - 'a';
}
return(string);
} /* C locale */
_lock_locale( local_lock_flag )
#if defined (_MT)
if (__lc_handle[LC_CTYPE] == _CLOCALEHANDLE)
{
char *cp; /* traverses string for C locale conversion */
_unlock_locale( local_lock_flag )
for (cp=string; *cp; ++cp)
{
if ('a' <= *cp && *cp <= 'z')
*cp += 'A' - 'a';
}
return(string);
} /* C locale */
#endif /* defined (_MT) */
if (0 == (dstlen =__crtLCMapStringA(__lc_handle[LC_CTYPE],
LCMAP_UPPERCASE, string, -1,
NULL, 0, 0, TRUE)))
goto error_cleanup;
/* Allocate space for dst */
if (NULL == (dst = (unsigned char *)
_malloc_crt(dstlen * sizeof(unsigned char))))
goto error_cleanup;
/* Map src string to dst string in alternate case */
if (0 == __crtLCMapStringA(__lc_handle[LC_CTYPE], LCMAP_UPPERCASE,
string, -1, dst, dstlen, 0, TRUE))
goto error_cleanup;
/* copy dst string to return string */
strcpy(string, dst);
error_cleanup:
_unlock_locale( local_lock_flag )
_free_crt (dst);
return (string);
#else /* defined (_WIN32) */
char * cp;
for (cp=string; *cp; ++cp)
{
if ('a' <= *cp && *cp <= 'z')
*cp += 'A' - 'a';
}
return(string);
#endif /* defined (_WIN32) */
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -