• 项目开发常见字符串处理模型-两头堵模型


    https://blog.csdn.net/flying_wild_fox/article/details/50155067

    strlen函数  :从内存的某个位置开始开始扫描,直到碰到第一个字符串结束符‘0’为止,然后返回计数器值,返回的长度不包含''

    isspace函数 :若参数为空白字符,则返回TRUE,否则返回NULL。 空白字符包含哪些见文章末尾

    PS: 如果不知道c语言提供的库函数存放在哪个头文件,可以下载c语言函数大全查一下

    需求:编写一个函数,要求去除字符串的前后空格

    下面用二种方法实现

    1 创建一个字符型数组,用数组去接收去除空格后的字符串

    2 直接修改原字符串,把空格删除 (这样做的前提是char* 指针所指向的内存空间必须可以被修改才行)。

    1 创建一个字符型数组,用数组去接收去除空格后的字符串

    #define _CRT_SECURE_NO_WARNINGS

    #include <stdlib.h>

    #include <string.h>

    #include <stdio.h>

    #include <ctype.h>

    int trimSpace(char*str, char*newstr)

    {  

      char* p = str; //不要直接修改形参指针,用一个临时变量去接收它的值,修改临时变量

      int count = 0; 

      if (str == NULL || newstr == NULL)  

      {   

        return 0;  

      }

       int i = 0;

       int j = strlen(p) - 1;

       while (isspace(p[i]) && p[i] != '')//是空白符就往后走,直到找到第一个不是空白字符的字符

       {  

        i++;  

      }  while (isspace(p[j]) && p[j] != '')//是空白符就往前走,直到找到第一个不是空白字符的字符  {   j--;  }

      count = j - i + 1;//计算去除二边空白字符后的长度

       strncpy(newstr, str + i, count);//从str的第i个开始,拷贝count个字符到newstr    

      newstr[count] = '';//别忘了在newstr后面加字符串结束符 ''

       return 1;

    }

    int main(void)

    {  

      char *p = "    abcd   "; //字符串的首尾都有空格  

      char arrstr[128]; //足以包含去除空格后的字符串就可以  

      trimSpace(p, arrstr);

      printf("字符串: %s ", arrstr);  

      system("pause");  

      return;

    }

    2 直接修改原字符串,把空格删除 (这样做的前提是char* 指针所指向的内存空间必须可以被修改才行)

    int trimSpace(char*str)

    {

      char* p = str; //不要直接修改形参指针,用一个临时变量去接收它的值,修改临时变量  

      int count = 0;  

      if (str == NULL)  

      {   return 0;  }

       int i = 0;  

      int j = strlen(p) - 1;

      while (isspace(p[i]) && p[i] != '')//是空白符就往后走,直到找到第一个不是空白字符的字符  

      {   

        i++;  

      }  

      while (isspace(p[j]) && p[j] != '')//是空白符就往前走,直到找到第一个不是空白字符的字符  

      {   

        j--;  

      }

       count = j - i + 1;//计算去除二边空白字符后的长度

       strncpy(str, str + i, count);//直接修改str, 从str的第i个开始,拷贝count个字符到str    

      str[count] = '';//别忘了在newstr后面加字符串结束符 ''

       return 1;

    }

    这个函数直接修改str,所以必须保证传入的字符串str指向的内存空间是可写的

    通过内存四区知道:char *p = "    abcd   ";这样字符串会存在常量区,是不可修改的

    char buf[128]; 这样字符串buf存在栈区,可以修改,所以在调用trimSpace时可以用char数组调用:

    int main(void)

    {  

      char buf[] = "    abcd   "; //字符串的首尾都有空格  

      trimSpace(buf);

      printf("字符串: %s ", buf);  

      system("pause");  

      return;

    }

     空白字符包含

    ' '  空格

    ' ' 水平制表符

    ' ‘ 换行符

    'v' 垂直制表符

    'f' 换页符

    ' ' 回车符

  • 相关阅读:
    Kubernetes Admission Controller解析
    容器化Node Exporter对主机磁盘使用率的监控问题
    Prometheus监控指标的label注入方法
    Prometheus告警模型分析
    Kubernetes Controller执行框架解析
    深入理解Istio核心组件之Pilot
    Prometheus存储模型分析
    如何利用Prometheus监控你的应用
    Prometheus在Kubernetes下的服务发现机制
    JSON字符串和js对象转换
  • 原文地址:https://www.cnblogs.com/fengxing999/p/10264225.html
Copyright © 2020-2023  润新知