zoukankan      html  css  js  c++  java
  • C和指针 第九章 字符串 字符 字节

    C语言中没有字符串类型,字符串是以NUL结尾的字符数组组成的。

    高级字符串查找:

    //计算字符串起始部分,有多少字符是在group中
    size_t strspn(char const * str, char const *group);
    //不在group中
    size_t strcspn(char const * str, char const *group);
    

      示例:

    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    	char str[] = "abababcccccccccccc";
    	printf("%lu
    ", strspn(str, "ab"));
    	printf("%lu
    ", strcspn(str, "b"));
    
    	return 0;
    }
    

    输出6 和 1

    //sep
    char * strpok(char * str, char const *sep);
    示例:
    #include <stdio.h>
    #include <string.h>
    
    int main()
    {
    	char str1[] = {"yangyangyangyangyangyangyang"};
    	char str2[strlen(str1)];
    	strcpy(str2, str1);
    	char *token;
    	char sep[2] = "g";
    
    	for(token = strtok(str2, sep); token != NULL; token = strtok(NULL, sep)){
    		printf("%s ", token);
    	}
    	printf("
    ");
    	printf("str1 %s
    ", str1);
    	printf("str2 %s
    ", str2);
    
    	return 0;
    }
    

    strtok的第一个参数不是NULL,函数将查找到字符串中的第一个标记。strtok同时保存它在字符串中的位置,如果第一个参数是NULL,函数就在同一个字符串中保存的位置开始像前面一样查找下一个标记,如果没有更多标记返回NULL,否则返回字符串指针。strtok会修改字符串。

    内存操作函数:

    由于字符串是字符结尾的,如果字符串内有NUL那么就需要使用内存操作函数。

    //从src开始的位置拷贝length个字节到dst内存起始位置
    void *memcpy(void *dst, void const *src, size_t length);
    
    //memmove和memcpy差不多,源和目的地可以重叠,memmove先把源拷贝到临时位置,然后再拷贝回来
    void *memmove(void *dst, void const *src, size_t length);
    
    //memcmp,和memchr分别是比较和查找
    void *memcmp(void *dst, void const *src, size_t length);
    void *memchr(void *dst, void const *src, size_t length);
    
    //memset将从src开始的length个字符设置成ch
    void *memset(void *src, int ch, size_t length);
    

     函数中参数类型都是void *,任何类型都可以转换成void *.

    #include <stdio.h>
    #include <string.h>
    
    
    int main()
    {
    	char str[100];
    	memset(str, 'a', 99);
    	str[100] = '';
    	printf("%s
    ", str);
    
    	return 0;
    }
    

    运行结果: 

     

  • 相关阅读:
    YTU 2481: 01字串
    smarty的自定义函数
    $_SERVER['SCRIPT_FLENAME']与__FILE__
    pdo中query()与prepare().execute()
    pdo中bindParam()与bindValue的区别
    pdo简介--错误与错误处理
    pdo的三个预定义类,PDO PDOStatement PDOException
    根目录 上级目录 当前目录
    反射机制(转)
    log4j 日志配置
  • 原文地址:https://www.cnblogs.com/yangxunwu1992/p/5808202.html
Copyright © 2011-2022 走看看