c语言中的内存操作
void *memset( void *dest, int c, size_t count );
用c填充dest开始的count个字符。
void *memmove( void *dest, const void *src, size_t count );
拷贝内存,允许有重叠
void *memcpy( void *dest, const void *src, size_t count );
拷贝内存,不允许有重叠
int memcmp( const void *buf1, const void *buf2, size_t count );
比较内存,返回 0 为相等,<0 buf1  比buf2 小。>0 反之。
void *memchr( const void *buf, int c, size_t count );
在内存中寻字符c并返回其地址,如果没有到,返回NULL
C语言中的字符串操作
c++中string的用法
char *strcat( char *strDestination, const char *strSource );
wchar_t *wcscat( wchar_t *strDestination, const wchar_t *strSource );
unsigned char *_mbscat( unsigned char *strDestination, const unsigned char *strSource );
当然有用的是第一条,最后一条好像都会遇到操作系统兼容性的问题.第二条?你不会遇到纯双字节字符吧?好像处理的都是中西文混排的.
这些命令返回的都是目标字串的指针.不过我宁愿用sprintf来处理。否则,目标地址的缓冲区溢出谁知道C系统处理过没有。看这样子
也没有办法处理的。
char *strchr( const char *string, int c );
wchar_t *wcschr( const wchar_t *string, wint_t c );
unsigned char *_mbschr( const unsigned char *string, unsigned int c );
在一个字符串里寻一个字符。返回指向第一个该字符的指针,不到返回NULL
int strcmp( const char *string1, const char *string2 );
int wcscmp( const wchar_t *string1, const wchar_t *string2 );
int _mbscmp(const unsigned char *string1, const unsigned char *string2 );
比较两个字符串。
char *strcpy( char *strDestination, const char *strSource );
wchar_t *wcscpy( wchar_t *strDestination, const wchar_t *strSource );
unsigned char *_mbscpy( unsigned char *strDestination, const unsigned char *strSource );
拷贝第二个字符串到第一个,返回目的串指针。我不知道这个函数是怎样处理的,先把第一个字串释放掉,然后在申请内存?如果是这样,那用
数组定义的字串又怎样处理呢?还是假定目的串有足够的缓冲?总之,用的时侯小心才是。不要出现缓冲溢出或者内存泄漏才好。
size_t strcspn( const char *string, const char *strCharSet );
size_t wcscspn( const wchar_t *string, const wchar_t *strCharSet );
size_t _mbscspn( const unsigned char *string, const unsigned char *strCharSet );
在一个字符串里查一个字串,返回不包含目标串的长度。注意,好像MSDN上说是第一个strCharSet中任意原子的地方。不知道这样的话还有什么意义。
size_t strftime( char *strDest, size_t maxsize, const char *format, const struct tm *timeptr );
size_t wcsftime( wchar_t *strDest, size_t maxsize, const wchar_t *format, const struct tm *timeptr );
据说ANSI支持。不知道是不
是真的。把时间转换成为字符串。
size_t strlen( const char *string );
size_t wcslen( const wchar_t *string );
size_t _mbslen( const unsigned char *string );
size_t _mbstrlen( const char *string );
不用说什么了。
char *strncat( char *strDest, const char *strSource, size_t count );
wchar_t *wcsncat( wchar_t *strDest, const wchar_t *strSource, size_t count );
unsigned char *_mbsncat( unsigned char *strDest, const unsigned char *strSource, size_t count);
指定添加多少个字符。
int strncmp( const char *string1, const char *string2, size_t count );
int wcsncmp( const wchar_t *string1, const wchar_t *string2, size_t count );
int _mbsncmp( const unsigned char *string1, const unsigned char string2, size_t count );
指定比较多少个字符
char *strncpy( char *strDest, const char *strSource, size_t count );
wchar_t *wcsncpy( wchar_t *strDest, const wchar_t *strSource, size_t count );
unsigned char *_mbsncpy( unsigned char *strDest, const unsigned char *strSource, size_t count );
指定拷贝多少个字符
char *strpbrk( const char *string, const char *strCharSet );
wchar_t *wcspbrk( const wchar_t *string, const wchar_t *strCharSet );
unsigned char *_mbspbrk( const unsigned char*string, const unsigned char *strCharSet );
查返回适配的指针。
size_t strspn( const char *string, const char *strCharSet );
size_t wcsspn( const wchar_t *string, const wchar_t *strCharSet );
size_t _mbsspn( const unsigned char *string, const unsigned char *strCharSet );
查返回第一个不是strCharSet中的索引.
char *strstr( const char *string, const char *strCharSet );
wchar_t *wcsstr( const wchar_t *string, const wchar_t *strCharSet );
unsigned char *_mbsstr( const unsigned char *string, const unsigned char *strCharSet );
这才是我们要的东东,这东东返回适配子串的指针.没有适配返回NULL,子串为空返回父串指针.
char *strtok( char *strToken, const char *strDelimit );
wchar_t *wcstok( wchar_t *strToken, const wchar_t *strDelimit );
unsigned char *_mbstok( unsigned char*strToken, const unsigned char *strDelimit );
这又是个好东东,查下一个分隔符分隔的区块.呵呵,再也不用为一行处理多个数据发愁了.
它的动作是先忽略所有分隔符,然后把指针指向第一个区块,把区块后面分隔符置尾零.
如果第一个参数是NULL,就查上次查到的下一个区块.
例如:
Example
/* STRTOK.C: In this program, a loop uses strtok
* to print all the tokens (separated by commas
* or blanks) in the string named "string".
*/
#include <string.h>
#include <stdio.h>
char string[] = "A string\tof ,,tokens\nand some  more tokens";
char seps[]  = " ,\t\n";
char *token;
void main( void )
{
printf( "%s\n\nTokens:\n", string );
/* Establish string and get the first token: */
token = strtok( string, seps );
while( token != NULL )
{
/* While there are tokens in "string" */
printf( " %s\n", token );
/* Get next token: */
token = strtok( NULL, seps );
}
}
Output
A string  of ,,tokens
and some  more tokens
Tokens:
A
string
of
tokens
and
some
more
tokens
不错不错.
long strtol( const char *nptr, char **endptr, int base );
long wcstol( const wchar_t *nptr, wchar_t **endptr, int base );
unsigned long strtoul( const char *nptr, char **endptr, int base );
unsigned long wcstoul( const wchar_t *nptr, wchar_t **endptr, int base );
把字符串变成长整形.注意这东东可以戴上进制,什么二进制,4进制,8进制,搞定.如果进制数不再2~36之间,则使用诸如0x86之类的格式。
管他呢,戴上就是了,不会死人的。反正你一定要写的,写0 和写16有什么区别呢。不过要使数据源是0x格式,就免了。写0吧。
double strtod( const char *nptr, char **endptr );
double wcstod( const wchar_t *nptr, wchar_t **endptr );
把字符串变成双精度形. endptr带回指向没有被转换的指针。也就是没有用的部分。
好东东。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。