
正文
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仍然有可能修改原来指向的地址,很危险。






