10)字符串知识

  1. 字符'\0'    ASCII值是0  但是0的ASCII值是48,所以  strlen遇到'\0'就停止  但是 sizeof是测得数组的长度,包含'\0'和0  滑油输出时’%s'也是,遇到'\0'就停止输出了
  2. strcpy  是会把字符串的那个\0复制过去的  比如:
    1. main()
      {
      char s1[]="abcd12349";
      char s2[]="xyz";
      int i;
      strcpy(s1,s2);
      for (i=0;i<10;i++) printf("%c|",s1[i]);
      }
      打印出:
      x|y|z| |1|2|3|4|9| |
      可以看出,z后面那个字符覆盖了。
      如果用
      printf("%s",s1); 输出,程序只打印出 xyz, 因为下一个是字符串结束符,结束符以后的12349 尽管还在s1里,但不再考虑。
  3. strstr(指针1,指针2)  返回值是一个指针,这个指针指向在  ‘指针1’中 ‘指针2’的首地址,比如
    1. #include<stdio.h>
      #include<string.h>
      #include"c.h"
      int main()
      {
      char *p="123456123789123";
      char a[]="78";
      p=strstr(p,a);
      printf("%s",p);
      return 0;
      }

    2. 就是在p中是否有a  这个结果输出:789123

  

  1.   我搜索一个长的字符串里面有多少个小的串--就用strlen和strstr
        1.  1 //函数的实现
           2 #include<stdio.h>
           3 #include<string.h>
           4 #include"c.h"
           5 int main()
           6 {
           7     char *p="123456123789123";
           8     int c=0;
           9     char a[]="123";
          10     /*p=strstr(p,a);*/
          11     
          12     while(p!=NULL)
          13     {
          14     p=strstr(p,a);//判断这个p是否有a,要是有 那个p就指向在之前那个p的位置,要是没有,就指向为空
          15     if(p!=NULL)//说明在p中有a,
          16     {
          17     p=p+strlen(a);//p得偏移啊,不然,就老是循环(就是,饿哦没有这个,那个p一直指向
              "123456123789123"  加了这个代码,p就指向了 456123789123
          18 c++; 19  } 20 21  } 22 printf("%d\n",c); 23 return 0; 24 }

           

  2.   两头堵模型  形如   ”          abcdefg          “  这样的字符串,前后都有空格的,我们用两个指针进行前后堵     比如  ”     abc      adsaf  sfdsf    fasdfs    fasdf    “  求这个里面包含的非空格字符串的个数  那么就用两个指针  一个指向头部,一个指向尾部。
  3.                                                    
  4.       因为那个数组有100个元素,所以结果是100
  5.       

     

  6.      

     

posted @ 2018-01-02 11:33  小油菜1  阅读(252)  评论(0编辑  收藏  举报