美文网首页
c风格的字符串

c风格的字符串

作者: arkliu | 来源:发表于2022-11-17 08:42 被阅读0次

    C语言规定:如果字符型数组的末尾包含了空字符\0,(也就是0), 那么该数组的内容就是一个字符串。

    因为字符串需要用0结尾,所以在声明字符数组的时候,要预留多一个字节来存放0.

    char name[21]; // 最多可以存放20个字节
    

    初始化方法

    char name[11]; // 最多存放10个字符,里面是垃圾直
    char name2[11] = "hello"; // 初始内容为hello, 多余部分系统自动填0
    char name3[] = "hello";
    char name4[11] = {"hello"};
    char name5 = {0};  // 把全部元素初始化为0
    

    清空字符串

    char name[11]; // 最多存放10个字符,里面是垃圾直
    memset(name, 0, sizeof(name));
    

    字符串复制

    • strcpy
    char * strcpy(char * dest, char* src);
    将参数src字符串拷贝至dest所指的地址
    返回值:返回参数dest字符串起始地址
    复制完成会在dest后追加0
    
    如果参数dest所指的内存空间不够大,会导致数组越界
    
    • strncpy
    char * strcpy(char * dest, char* src, const size_t n);
    将src的前n个字符,赋值给dest
    返回值:返回参数dest字符串起始地址
    
    如果src字符串长度小于n,则拷贝完字符串后,在dest后追加0,直到n个
    如果src字符串长度大于n, 就截取src的前n个字符,不会在后面追加0
    
    如果参数dest所指的内存空间不够大,会导致数组越界
    

    \color{red}{如果src字符串长度大于n, 就截取src的前n个字符,不会在后面追加0} 这里有一个坑, 由于不会追加0, 导致不确定dest的结尾处在哪里,因此使用前,先清空下

    char name[11]; // 最多存放10个字符,里面是垃圾直
    memset(name, 0 , sizeof(name));
    strncpy(name, "hello", 3);
    cout << "name = "<<name<<endl;
    

    strlen()获取字符串的长度

    strlen()获取字符串的长度,不包含0。

    字符串拼接

    char* strcat(char *dest, const char * src);
    
    char * strncat(char *dest, const char * src, const size_t n);
    

    字符串比较

    int strcmp(const char *str1, const char * str2);
    int strcmp(const char *str1, const char * str2, const size_t n);
    

    字符查找

    char * strchr(const char *s, const int c);
    
    返回一个指向在字符串s中第一个出现c的位置,如果找不到返回0.
    

    字符串查找

    char * strstr(const char* str, const char* substr);
    检索子串在str中首次出现的位置,如果找不到则返回0
    

    在vs中,如果要使用c标准的字符串操作函数,要在源代码文件最上面,加上

    #define_CRT_SECURE_NO_WARNINGS
    

    相关文章

      网友评论

          本文标题:c风格的字符串

          本文链接:https://www.haomeiwen.com/subject/tlartdtx.html