❶ codeblocks上string stoi函数包含在哪个头文件
这是因为str指针指向的字符串"nanhuadaxue"是一个常量字符串,他的值是不能更改的,所以会提示错误,可以这样使用:str=strrev(strp(str));
❷ 如何使用微软提供的TCHAR.H头文件
通过研究msdn知道,微软为了方便程序写出能够使用不同字符集的通用代码,特别为程序员提供了这个头文件,头文件的功能就是实现了 数据类型、函数以及其他对象依据宏定义进行map过程。msdn的对该文件的描述如下:To simplify transporting code for international use, the Microsoft run-time library provides Microsoft-specificgeneric-text mappings for many data types, routines, and other objects.这样我们就可以使用TCHAR.H头文件中的定义的这些mapping写出可以运行于不同字符集上的通用代码;你所需要做的就是在包含该头文件后在编译器选项里面定义好所需要的宏或者在你的源文件里使用#define定义所需要的宏也可以。需要说明的是TCHAR.H给出的mapping过程是微软专有的并不是ANSI标准,这点要注意,也就是说在微软之外的系统可能就不可以使用了。在编译器编译过程中会检查你所定义的宏,然后将TCHAR.H文件中的以_tcs打头的函数转换成对应的str或wcs大头的函数。如果你要build一个使用UNICODE字符集的程序,则可以定义_UNICODE宏。如果要build一个single-byte的程序则不需要定义任何宏,单字节字符程序时默认的(对于WIN32是这样,对于WINCE默认则是unicode字符程序)。我们特别要注意头文件中定义的类型–_TCHAR;这个类型也是与使用的字符集类型有关的,如果是单字符集则其被定义成char类型;如果是宽字符集程序则是wchar_t类型,是16bit的。我们给出一个例子:如果我们这样写程序:_TCHAR *RetVal, *szString;RetVal = _tcsrev(szString);如果预编译系统定义了宏_UNICODE,则上述代码被翻译成如下:wchar_t *RetVal, *szString;RetVal = _wcsrev(szString);如果没有定义宏_UNICODE,则preprocessor maps 该代码to single-byte ASCII code:char *RetVal, *szString;RetVal = strrev(szString);Thus you can write, maintain, and compile a single source code file to run with routines that are specific to either single byte or Unicode character sets.【注意】我们有时候会看到这样的函数wsprintf,有人会和swprintf比较,其实这两个函数对用用户来说是一样的,只不过前者是在
❸ c语言 将一个输入的字符串的内容颠倒后输出
可以直接使用库函数strrev(), 需要包含头文件string.h
#include<stdio.h>#include<string.h>intmain(){charbuf[1024];scanf("%s",buf);strrev(buf);printf("%s",buf);return0;}
strrev不是C语言的函数,自己用指针来实现也非常简单。
char *_strrev(char *str)
{
char *f = str, *l = str + strlen(str), ch;
while(f<l) {ch = *f; *f++ = *(–l); *l = ch;}
return str;
}
wchar_t *_wcsrev(wchar_t *wcs)
{
wchar_t *f = wcs, *l = wcs + wcslen(wcs), ch;
while(f<l) {ch = *f; *f++ = *(–l); *l = ch;}
return wcs;
}
对于多字符的汉字的调换次序,要想得到正确的结果,必须先将多字符转换为宽字符,调换次序后再转化为多字符。
❹ string.h头文件
String ManipulationThese 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 RoutinesRoutine Use _mbscoll, _mbsicoll, _mbsncoll, _mbsnicoll Compare two multibyte-character strings using multibyte code page information (_mbsicoll and _mbsnicoll are case-insensitive) _mbsdec, _strdec, _wcsdec Move string pointer back one character _mbsinc, _strinc, _wcsinc Advance string pointer by one character _mbslen Get number of multibyte characters in multibyte-character string; dependent upon OEM code page _mbsnbcat Append, at most, first n bytes of one multibyte-character string to another _mbsnbcmp Compare first n bytes of two multibyte-character strings _mbsnbcnt Return number of multibyte-character bytes within supplied character count _mbsnbcpy Copy n bytes of string _mbsnbicmp Compare n bytes of two multibyte-character strings, ignoring case _mbsnbset Set first n bytes of multibyte-character string to specified character _mbsnccnt Return number of multibyte characters within supplied byte count _mbsnextc, _strnextc, _wcsnextc Find next character in string _mbsninc. _strninc, _wcsninc Advance string pointer by n characters _mbsspnp, _strspnp, _wcsspnp Return pointer to first character in given string that is not in another given string _mbstrlen Get number of multibyte characters in multibyte-character string; locale-dependent sprintf, _stprintf Write formatted data to a string strcat, wcscat, _mbscat Append one string to another strchr, wcschr, _mbschr Find first occurrence of specified character in string strcmp, wcscmp, _mbscmp Compare two strings strcoll, wcscoll, _stricoll, _wcsicoll, _strncoll, _wcsncoll, _strnicoll, _wcsnicoll Compare two strings using current locale code page information (_stricoll, _wcsicoll, _strnicoll, and _wcsnicoll are case-insensitive) strcpy, wcscpy, _mbscpy Copy one string to another strcspn, wcscspn, _mbscspn, Find first occurrence of character from specified character set in string _strp, _wcsp, _mbsp Duplicate string strerror Map error number to message string _strerror Map user-defined error message to string strftime, wcsftime Format date-and-time string _stricmp, _wcsicmp, _mbsicmp Compare two strings without regard to case strlen, wcslen, _mbslen, _mbstrlen Find length of string _strlwr, _wcslwr, _mbslwr Convert string to lowercase strncat, wcsncat, _mbsncat Append characters of string strncmp, wcsncmp, _mbsncmp Compare characters of two strings strncpy, wcsncpy, _mbsncpy Copy characters of one string to another _strnicmp, _wcsnicmp, _mbsnicmp Compare characters of two strings without regard to case _strnset, _wcsnset, _mbsnset Set first n characters of string to specified character strpbrk, wcspbrk, _mbspbrk Find first occurrence of character from one string in another string strrchr, wcsrchr,_mbsrchr Find last occurrence of given character in string _strrev, _wcsrev,_mbsrev Reverse string _strset, _wcsset, _mbsset Set all characters of string to specified character strspn, wcsspn, _mbsspn Find first substring from one string in another string strstr, wcsstr, _mbsstr Find first occurrence of specified string in another string strtok, wcstok, _mbstok Find next token in string _strupr, _wcsupr, _mbsupr Convert string to uppercase strxfrm, wcsxfrm Transform string into collated form based on locale-specific information vsprintf, _vstprint Write formatted output using a pointer to a list of arguments
❺ C语言字符串反序输出
数组定义完,没有初始化;系统会分配一段物理内存给数组,如果不初始化,就会打印出乱码,该段内存地址有可能之前被使用过。
chari[100]={0},o[100]={0};
结果对比:
未初始化数组