20130313 word 公式与文字对齐

1、

就是这儿

 

然后是这儿

2、这种错误很可能就是进入了死循环

3、复习了字符串现场编写

   1、strstr(const char *string, const char *substring):查找string中是否存在stringsub。

     检查两个字符是否为空,

     判断string和stringsub的长度大小

      暴力搜索

   2、找出一个字符串中第一个只出现一次的字符

              方法:哈希表(定义256大小的数组)、bit映射(需要26大小的数组,仅仅适用于26个字母)

   3、strcpy()字符串拷贝

     检查源字符串首地址和目的字符串首地址是否相同

     检查源字符串和目标字符串是否为空

     定义char*临时变量保护目标地址strDes,一边返回适用

     进行拷贝while((*strDes++=strSrc++)!='\0');

   4、strncpy(char *strDes, const char *strSrc, unsigned int count)

       从strSrc拷贝n个字符串到strDes

   5、查找字符串 s 中首次出现字符 c 的位置

    char *strchr(const char *str, int c)

    6、比较字符串s和t第一个不相同的字符的大小,若s大,则返回正数,否则返回负数

     int strcmp(const char *s, const char *t)

    7、将strSrc复制到strDes之后

    char *strcat(char *strDes, const char *strSrc)

   8、返回字符串大小,建议将int改为size_t

    int strlen(const char *str)

   9、将字符串拷贝到新位置

     char *strdup_(char *strSrc)

     1、判断字符串是否为空

     2、在堆上分配len+1个字节的内存,char *address=(char *)malloc(len+1)

     3、复制数据

     4、返回首地址新分配空间的首地址

   10、剪切strSrc中的n个字符串到strDes之后。记得最后补上'\0'

      char *strncat(char *strDes, const char *strSrc, unsigned int count)

        11、比较前两个字符串前n个字符的大小,方法同strcmp()

     int strncmp(const char *s, const char *t, unsigned int count)

   12、返回字符串strSrc中第一个被包含在str中的字符,即:如str:abcd    strSrc:efgc

                     char *strpbrk(const char *strSrc, const char *str)

   13、返回字符串strSrc中第一个在str中出现的字符在s1中的下标值(返回strSrc中连续不在str中出现的字符长度)

     strSrc:abcd  str:edfc结果:字符c,下标为2

     int strcspn(const char *strSrc, const char *str)

   14、返回字符串strSrc中第一个不在str字符串中出现的字符的下标。即返回字符串strSrc中连续包含在str中的字符个数

      strSrc:acbd;
      str:deac;
      结果为b,下标为2

     int strspn(const char *strSrc, const char *str)

    15、查找字符c在字符串str中从后面开始的第一次出现的位置,如果成功,则返回从该位置到字符串结尾的所有字符,如果失败,则返回 false。与之相对应的是       strchr()函数,它查找字符串中首次出现指定字符的位置

      char *strrchr(const char *str, int c)
    16、用于反转字符串

      char* strrev(char *str)

    17、将一个串中的前count个字符都设为指定字符c

      char *strnset(char *str, int c, unsigned int count)

    18、将一个串都设为指定字符c

      char *strset(char *str, int c)

    19、分解字符串为一组字符串。strToken为要分解的字符串,str为分隔符字符串。

      例如:strtok("abc,def,ghi",","),最后可以分割成为abc def ghi。尤其在点分十进制的IP中提取应用较多

      char *strtok(char *strToken, const char *str)

    20、原型:extern char *strupr(char *s);

      用法:#include <string.h>
      功能:将字符串s转换为大写形式
      说明:只转换s中出现的小写字母,不改变其它字符。返回指向s的指针
    21、原型:extern char *strlwr(char *s);
      用法:#include <string.h>
      功能:将字符串s转换为小写形式
      说明:只转换s中出现的大写字母,不改变其它字符。返回指向s的指针
    22、从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中
      void *memcpy(void *dest, const void *src, size_t n);
    23、功能:由src所指内存区域复制不多于count个字节到dest所指内存区域,如果遇到字符c则停止复制。
      返回值:如果c没有被复制,则返回NULL,否则,返回字符c 后面紧挨一个字符位置的指针
      extern void *memccpy(void *dest, void *src, unsigned char c, unsigned int count);
    24、原型:extern void *memchr(const void *buf, int ch, size_t count);
      用法:#include <string.h>
      功能:从buf所指内存区域的前count个字节查找字符ch。
      说明:当第一次遇到字符ch时停止查找。如果成功,返回指向字符ch的指针;否则返回NULL。
    25、int memcmp(const void *buf1, const void *buf2, unsigned int count);

 

      当buf1<buf2时,返回值<0
      当buf1=buf2时,返回值=0
      当buf1>buf2时,返回值>0
    26、void *memmove( void* dest, const void* src, size_t count );
      memmove用于从src拷贝count个字符到dest,如果目标区域和源区域有重叠的话,memmove能够保证源串在被覆盖之前将重叠区域的字节拷贝到目标区       域中。但复制后src内容会被更改。但是当目标区域与源区域没有重叠则和memcpy函数功能相同
    27、void *memset(void *str, int c, unsigned int count)  
      将str所指向的某一块内存中的前n个 字节的内容全部设置为c指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作,         其返回值为指向S的指针。
 
3、野指针
  delete p;只是把指针p所指向的内存区域给释放了(释放就是把这段内存标记成可用状态)。如果之后不加p=NULL,p所指向的地址没变,即如果原来p=5,那么释放之后,p还是等于5;这样通过p仍然有可能修改原来指向的地址,很危险。
 

 

 

 

 
 

 

 

 

 

 

 

posted @ 2014-03-13 16:43  yexuannan  阅读(277)  评论(0编辑  收藏  举报