字符串处理C函数总结

来源:互联网 发布:字库制作软件 编辑:程序博客网 时间:2024/05/22 10:31

1. sizeof 只能用来获取数组占用的字节数

        wchar_t buf[50];
        sizeof(buf) 等于 50 * sizeof(wchar_t)
        wchar_t *buf = (wchar_t*)malloc(100);
        sizeof(buf) 等于 一个指针所占的字节数,在32位机器上是4个字节

2. 对字符串操作函数参数的解释

        如: wcscpy_s定义为
            errno_t wcscpy_s(wchar_t * _Dst, rsize_t _SizeInWords, const wchar_t * _Src);
        其中_SizeInWords参数用于指定_Dst缓冲区的大小,但是它是以Word为单位,也就是 wchar_t 字符总数.

        又如:strcpy_s定义为
            errno_t strcpy_s(char * _Dst, _SizeInBytes, const char * _Src);
        其中_SizeInBytes参数也是用于指定_Dst缓冲区的大小,但是它是以Byte为单位,也就是 char 字符总数.

3. 常用C字符串处理函数

        复制字符串:
                    strcpy_s    wcscpy_s

        复制指定长度的字符串:
                    strncpy_s   wcsncpy_s
                    注: strncpy_s定义为:
                        errno_t strncpy_s(char * _Dst,rsize_t _SizeInBytes, const char * _Src, rsize_t _MaxCount);
                        最后一个参数是允许从源字符串中拷贝的最大字符数(而不是字节数).

        字符串长度:
                    strlen      wcslen

        字符串合并:
                    strcat_s    wcscat_s

        字符串比较:
                    strcmp      wcscmp
                    stricmp     wcsicmp

        字符串分割:
                    strtok_s    wcstok_s
                    示例:
char whole[50] = {"123,456<789,END"};
char *context = NULL;
char *p = NULL;
p = strtok_s(whole, ",<", &context);
while(p != NULL)
{
printf("%s\n",p);
p = strtok_s(NULL, ",<", &context);
}

        字符串查找:
                    在源字符串中正向查找指定字符,
                    返回的指针指向 目标字符 在源字符串中第一次出现的位置;如果未找到,则返回NULL.
                    strchr      wcschr

                    在源字符串中正向查找完整的目标字符串,
                    返回的指针指向 目标字符串 在源字符串中第一次出现的位置;如果未找到,则返回NULL.
                    strstr      wcsstr

                    以目标字符串的所有字符作为集合,在当前源字符串正向查找该集合的任一元素,
                    返回的指针指向 目标字符集合中的任意字符 在源字符串中第一次出现的位置;如果未找到,则返回NULL.
                    strpbrk     wcspbrk

                    在源字符串中反向查找指定字符,
                    返回的指针指向 目标字符 在源字符串中第一次出现的位置;如果未找到,则返回NULL.
                    strrchr     wcsrchr

        字符串格式化:
                    sprintf_s   swprintf_s

        字符串与数字间转换:
                    (字符串 到 int)       atoi    _wtoi
                    (字符串 到 long)      atol    _wtol
                    (字符串 到 double)        atof    _wtof
                    (字符串 到 __int64)   _atoi64     _wtoi64
                    (int 到 字符串)       itoa    _itow
                    (long 到 字符串)      ltoa    _ltow
                    (double 到 字符串)        gcvt
                    (__int64 到 字符串)   _i64toa     _i64tow

0 0
原创粉丝点击