C char 字符函数收藏

一  、char* 字符串连接 

char* strcatEx(char * dst, const char * src)
{//用Free释放;dst子字符;src 原字符。
    _ASSERTE(NULL != dst && NULL != src);   // 源码里没有断言检测
    char* pStr = (char*)malloc(strlen(dst) + strlen(src) +1);
    strncpy(pStr,src,strlen(src)+1);
    return strncat(pStr,dst,strlen(dst));
}
//dest      指向要附加到的以空字符结尾的字节字符串
//destsz  目标缓冲区的大小
//SRC     指向要复制的字符数组的指针
//count  最大数量的字符复制,也可以只复制规定的字符个数。
// 在成功时返回零,错误时返回非零值。
strncat_s(char * restrict dest,rsize_t destsz,const char * restrict src,rsize_t count);

strncat_s(str, "Goodbye World!", 3);//str = Goo,只取了3个字符。
strncat_s(str, "Goodbye World!", 14);//str = Goodbye World!,取全部
 //连接2个数组
char arr1[20];char arr2[10];  //定义2个数组
char *p1,*p2;  //定义2个指针
p1 = arr1 ; p2 = arr2;
while(*p1 !='\0')  p1++; //指针移动到p1的结尾
 while(*p2 !='\0')  *p1++ = *p2++; //将p2的字符给p1;
*p1 = '\0'; //结尾加null
retutn arr1;

二 、取INI配置文件所有节名

std::vector<char*> CIniFile::GetSectionNamesEx()
{
    char ac_Result[2000];
    std::vector<char*> vstr;
    char* pstr = NULL;
    char* pNextSection = NULL; 

    DWORD m_lRetValue = GetPrivateProfileSectionNames(ac_Result,2000,m_szFilePath);
    pNextSection = ac_Result;  //这里是第一个;
    //TRACE("%s\n", pNextSection); 
    pstr = new char[strlen(pNextSection+1)];   //
    memcpy(pstr,pNextSection,strlen(pNextSection)+1);
    vstr.push_back(pstr);   //存放第一个
    
    while (*pNextSection != 0x00)     
    {         
        pNextSection = pNextSection + strlen(pNextSection) + 1;         
        if(*pNextSection != 0x00)         
        {//要用拷贝 的方法             
            pstr = new char[strlen(pNextSection+1)];   //
            memcpy(pstr,pNextSection,strlen(pNextSection)+1);
            vstr.push_back(pstr);   //存放第一个
        }     
    }
    return vstr;
}

trcpy(p, p1) 复制字符串

strncpy(p, p1, n) 复制指定长度字符串

strcat(p, p1) 附加字符串

strncat(p, p1, n) 附加指定长度字符串

strlen(p) 取字符串长度

strcmp(p, p1) 比较字符串

strcasecmp忽略大小写比较字符串

strncmp(p, p1, n) 比较指定长度字符串

strchr(p, c) 在字符串中查找指定字符

strrchr(p, c) 在字符串中反向查找

strstr(p, p1) 查找字符串

strpbrk(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找该集合的任一元素

strspn(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找不属于该集合的任一元素的偏移

strcspn(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找属于该集合的任一元素的偏移

* 具有指定长度的字符串处理函数在已处理的字符串之后填补零结尾符

2)字符串到数值类型的转换

strtod(p, ppend) 从字符串 p 中转换 double 类型数值,并将后续的字符串指针存储到 ppend 指向的 char* 类型存储。

strtol(p, ppend, base) 从字符串 p 中转换 long 类型整型数值,base 显式设置转换的整型进制,设置为 0 以根据特定格式判断所用进制,0x, 0X 前缀以解释为十六进制格式整型,0 前缀以解释为八进制格式整型

atoi(p) 字符串转换到 int 整型

_itoa_s(iniSerial,initostr,16);

//_itoa_s (是 itoa 的安全版本
//value, 是要转换的数字;
//buffer, 是存放转换结果的字符串;
//sizeInCharacters, 存放转换结果的字符串长度
//radix, 是转换所用的基数,2-36。如,2:二进制,10:十进制,16:十六进制
 char buffer[65];  //不能用 char*
 _itoa_s( -1, buffer, 65, r );
View Code

atof(p) 字符串转换到 double 符点数

atol(p) 字符串转换到 long 整型

3)字符检查

isalpha() 检查是否为字母字符

isupper() 检查是否为大写字母字符

islower() 检查是否为小写字母字符

isdigit() 检查是否为数字

isxdigit() 检查是否为十六进制数字表示的有效字符

isspace() 检查是否为空格类型字符

iscntrl() 检查是否为控制字符

ispunct() 检查是否为标点符号

isalnum() 检查是否为字母和数字

isprint() 检查是否是可打印字符

isgraph() 检查是否是图形字符,等效于 isalnum() | ispunct()

 c语言查找字符串位置(查找字符串在字符串中的位置)-C语言-E安全 (easyaq.com)

posted on 2023-03-30 17:58  悠心不已  阅读(7)  评论(0)    收藏  举报

导航