C语言 高级字符串函数及使用场景

因为项目需要,接触到很多直接操纵char数组和const char* 的代码场景,经常是凶险万分。常见的字符串处理函数(strcpy, strcat, strcmp)已经既不安全 也无法满足需要。
这里介绍一堆高级的字符串函数及使用场景

判断字符串前几字个字符是否等于指定串: strncmp

char* str = "12345";
if ( 0 == strncmp(str, "123", 3) )
{
    printf("相等");
}

不区分大小写 判断字符串前几字个字符是否等于指定串: strncasecmp

    char* str = "ABCDE";
    if ( 0 == strncasecmp(str, "aBC", 3) )
    {
        printf("相等");
    }

判断字符串2是否是字符串1的字串: strstr

strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。

char* str1 = "12345";
char* str2 = "23";

char* p = strstr(str1, str2);
if ( NULL != p )
{// 说明str2 是 str1的字串

     printf("addr of str1: %d\n", str1);
     printf("addr of p: %d\n", p);
}

执行结果 : 
addr of str1: 4197096
addr of p: 4197097

判断字符串是否包含某个字符: strchr

若包含有 则返回字符第一次出现的地址

    char* str1 = "12345";
    char* p = strchr(str1, '3');
    if ( NULL != p )
    {// 说明str1包含有 '3'

        printf("addr of str1: %d\n", str1);
        printf("addr of p: %d\n", p);
    }

执行结果:
addr of str1: 4197080
addr of p: 4197082

字符串拷貝 strdup

拷贝字符串的时候使用这个函数,为将'\0'一起拷贝了, 自己去malloc的话 往往忘记要len+1

const char* test = "test string";
char* p =  strdup(test);

cout << p << endl;

你可能感兴趣的:(C语言 高级字符串函数及使用场景)