c+中字符串的相关概念

来源:互联网 发布:搜狗输入法下载centos 编辑:程序博客网 时间:2024/06/05 16:49

在c语言中使用字符数组来模拟字符串

c语言中的字符串是以'\0'结束的字符数组

c语言中的字符串可以分配于栈空间,堆空间或者只读存储区字符串操作
数组法,下标法
字符数组名,是个指针,是个常量指针;
字符数组名,代表字符数组首元素的地址,不代表整个数组。
如果代表这个数组,那需要数组数据类型的知识!

字符串做函数参数

void copy_atr01(char *from,char *to)

{

    for(; *from!='\0';from++;to++)

     {

           *to=*from;

     }

   *to='\0';

}




void copy_str02(char *from,char *to)

{

      while(*from!='\0')

    {

        *to++=*from++;

    }

    *to='\0';

}




void copy_str03(char *from,char *to)

{

      while((*to=*from)!='\0')

      {

            to++;

            from++;

      }

}



void copy_str04(char *from,char *to)//最终简化版

{

      while((*to++=*from++)!='\0')

      {

            ;

      }

}



int copy_str05_good(const char *from,char *to)

{

     if(from==NULL || to==NULL)

      {

            printf("func copy_str05_good"());

            return -1;

      }

     while((*to++=*from++)!='\0')

      {

            ;

      }

     return 0;

}

字符串操作类型错误


建立一个思想:是主调函数分配内存,还是被调函数分配内存;

越界  语法级别的越界

char buf[3]="abc";


不断修改内存指针变量


越界



char *getKeyByValue(char **keyvaluebuf,char *keybuf)

{

     int i=0;

     char *a=(char*)malloc(50);

     printf("%x",a);

     for(; **keyvaluebuf  !='\0';i++)

      {

           *a++=*(*keyvaluebuf)++;

      }

       free(a);

}


临时str3 内存空间

char *str_cnct(x,y)  

char *x,*y;

char *str_cnct(char *x,char *y)

{

      char str3[80];

      char *z=str3;   //指针指向数组str3

      while(*z++ = *x++);

      z--;

      while(*z++=*x++);

      z--;

      while(*z++=*y++);

      z=str3;

      return(z);

}

2.经验要学习

   while(*z++=*x++);

    z--;  //去掉串尾结束标志


    char *str_cnct(char *x,char *y)

   {

         char *str3=(char *)malloc(80)

         char *z=str3;

         while(*z++=*x++);

         z--;

         while(*z++=*y++);

         z=str3;

         return(z);

   }


main()

{

     char *p=str_cnct("abcd","ddeee");

     if(p!=NULL)

    {

         Free(p);

         p=NULL;

    }

}


     


































1 0