zoukankan      html  css  js  c++  java
  • C语言 字符串操作 笔记

    /*
        C语言字符串的操作笔记
        使用代码和注释结合方式记录 
    */ 
    
    # include <stdio.h>
    # include <string.h>
    
    int main(void)
    {
        // 不受限制的字符串函数
         
        char * ch1 = "Hello World!";  // 此处有警告 
        char ch2[20] = "Hello World!";  
        // 计算字符串长度函数 strlen()
        int i, j;
        i = strlen(ch1);
        j = strlen(ch2);
        printf("第一个字符串的长度为:%d
    ", i);
        printf("第二个字符数组的长度为:%d
    ", j);
        /*
        输出结果:
            第一个字符串的长度为:12
            第二个字符数组的长度为:12 
        注意:
            strlen() 的返回值为无符号数 
        */ 
        
        // 复制字符串函数 strcpy()
        char ch3[20] = "LinLin";
        puts(ch3);
        strcpy(ch3, ch1);
        puts(ch3);    
        /*
        输出结果:
            LinLin
            Hello World!
        注意:
            新字符串以 NUL 字节结尾,且要保证ch3 的长度足够容纳 ch1, 否则
            会覆盖ch3 数组后面的内存,因为 strcpy 无法判断是否有足够长度
            strcpy() 的返回值为它的第一个参数的一份拷贝 
        */ 
        
        // 连接字符串函数 strcat()
        char ch4[20] = "Hello!";
        char ch5[20] = "LinLin";
        puts(ch4);
        puts(ch5);
        strcat(ch4, ch5);
        puts(ch4); 
        /*
        输出结果:
            Hello!
            LinLin
            Hello!LinLin
        注意:
            ch4 要有足够空间容纳连接后的新字符串 
            strcat() 的返回值为它的第一个参数的一份拷贝 
        */
        
        // 字符串比较函数 strcmp()
        char ch6[20] = "LinLin";
        char ch7[20] = "LinLin";
        puts(ch6);
        puts(ch7);
        if (0 == strcmp(ch6, ch7))
            printf("这两个字符串相同!
    ");
        /*
        输出结果:
            LinLin
            LinLin
            这两个字符串相同!
        注意:
            如果ch6 小于 ch7 则返回一个小于 0 的值
            反之返回一个大于 0 的值
            相等返回 0
            如果前面一个字符串为后面一个字符串的前面的一部分,也会被认为小于
            后面的字符串,这种比较称为“词典比较” 
        */
        
        /*
        长度受限的字符串函数
        strncpy(char * s1, char * s2, int len);
        strncat(char * s1, char * s2, int len);
        strncmp (char * s1, char * s2, int len);
        这些函数的复制,连接,查找功能和上面所说的函数相同,但却受函数的三个
        参数,即长度限制
         
        */ 
        
        // 字符串查找基础
        /*
        查找一个字符
        char * strchr(char const * str, char ch);
        该函数会在字符串str中查找ch字符,如果没找到返回NULL指针,反之返回ch第
        一次出现的位置 
        char * strrchr(char const * str, char ch);
        与strchr()函数类似,但其返回值为ch字符最后一次出现的位置
        
        查找任何几个字符
        char * strpbrk(char const * str, char const * group);
        这个函数返回一个指向str中第一个匹配group中任何一个字符的位置,如果都不
        匹配,返回一个NULL指针
        
        查找一个子串
        char * strstr(char const * s1, char const * s2);
        这个函数在s1中查找s2第一次出现的起始位置,并返回一个指向该位置的指针,
        如果s2并没有完整的出现在s1的任何一个位置,则返回一个NULL指针 
        */ 
        
        // 高级字符串查找
        /*
        查找一个字符串前缀
        size_t strspn(char const * str, char const * group); 
        用于在字符串的起始位置对字符计数,返回字符串起始部分含有group中字符的数目
        size_t strcspn(char const * str, char const * group);
        遇上一个函数相反,返回字符串起始部分不含有group中字符的数目 
        */ 
        int len1, len2;
        char ch8[20] = "25,142,dfaifn,s23";
        len1 = strspn(ch8, "01234");
        len2 = strcspn(ch8, "01234");
        printf("len1 = %d, len2 = %d
    ", len1, len2);
        // 输出结果: len1 = 1, len2 = 0 
        
        // 查找标记
        /*
        一个字符串常包含几个单独的部分,他们彼此分隔开,每次为了处理这些部分,首先
        需要将它们从字符串中抽取出来
        char * strtok(char * str, char * const sep);
        sep 参数是一个字符串,定义了用作分隔符的字符集,第一个参数是一个字符串,它
        包含了sep中的字符,strtok找到str的下一个标记,并将其用NUL结尾,然后返回一个
        指向这个标记的指针。 
        注意:此函数会修改原字符串,如果原字符串是不可修改的,就将其复制一份拷贝传
        给strtok 
        */ 
        
        /*
        字符转换
        将大写字母转换成小写字母
        char tolower(char ch);
        将小写字母转换成大写字母
        char toupper(char ch); 
        */ 
        
        return 0;
    }
  • 相关阅读:
    HttpClient——POST请求方法
    【Httpclient+TestNG】接口自动化测试——GET请求示例
    一些杂碎的小知识点
    搭建linux服务器的环境
    javase(1)
    事务处理
    数据库优化
    表单重复提交--->使用Session防止表单重复提交
    两个小程序
    java基础小知识(2)
  • 原文地址:https://www.cnblogs.com/lnlin/p/6713295.html
Copyright © 2011-2022 走看看