《c和指针》(四)
来源:互联网 发布:网络教育本科怎么报名 编辑:程序博客网 时间:2024/05/17 04:26
一、字符串长度
1、标准库函数:size_t strlen(char const *string) ; 头文件:string.h, size_t 定义在stddef.h中,是无符号整型。
2、字符串长度的比较:
方案一: if (strlen(x) >= strlen(y)) {
………………
}
方案二:if (strlen(x) - strlen(y) >= 0) {
…………………
}
方案一是正确的。方案二会出现问题,它的条件永远为真,因为strlen的返回值是无符号的,两个无符号的整型相减,结果还是无符号的。如果判断表达式中既有无符号也有有符号的,例如下面两个方案:
方案一:if (strlen(x) >= 10) {
…………………..
}
方案二:if (strlen(x) - 10 >= 0) {
…………………………
}
同样,方案一是正确的。方案二会出现一些问题,在方案二中,将strlen的返回值强制转换为int再参与表达式运算可以消除这个问题。
二、字符串复制、连接、比较库函数
1、长度不受限的字符串函数 strcpy、strcat、strcmp,注意strcpy(char *dst, char const *src)和strcat(char *dst, char const *src), 当dst和src指向的内存区域出现重叠时,其结果是未定义的,因此,要保证dst指向的内存区域可以存储的下结果。
2、长度受限的字符串库函数 strncpy(char *dst,char const *src, size_t len), strncat(char *dst, char const *src, size_t len), strncmp(char *dst, char const *src, size_t len)
三、字符串查找函数
1、查找一个字符
strchr(char const *src, int ch);查找字符ch 在src中第一次出现的位置,若无,返回NULL
strrchr(char const *src, int ch);查找字符ch 在src中最后一次出现的位置,若无,返回NULL
2、查找字符集中的任一字符并返回其第一次出现的位置,strpbrk(char const *src, char const *group),若无,返回NULL。
3、查找子串str在src中第一次完整出现的位置,strstr(char const *src, char const *str), 若无,返回NULL;若str为空字符串,返回src。
注:在标准库中并没有strrpbrk和strrstr,如有需要自己实现,可以在函数内部调用strpbrk和strstr实现。
四、高级字符串查找
1、size_t strspn(char const *str, char const *group); 返回str起始部分匹配group中任意字符的字符个数,如果str中的某一个字符没有出现在group中,查找结束。该函数可用于查找str字符串中第一个非group中的字符的位置,str + 返回值即可求出。
size_t strcspn(char const *str, char const *group); 返回str起始部分不匹配group中任意字符的字符个数,直到匹配到任意一个group中指定的字符结束。该函数可用于查找str字符串中所有的非group中的字符。
2、分隔字符串:char *strtok(char *str, char const *sep); 其中,sep指向一个字符串,它可以是很多分隔符的集合。注意一点:该函数会修改原字符串str。
五、char *strerror(int error_num);将一个错误码转换为字符串信息。
六、内存操作函数,可以处理任意字节序列,不仅仅限于以NULL结尾的字符串
memcpy、memmove、memcmp、memchr(注:该函数可以在一个字节序列中查找一个特定的值)、memset
1、这些函数的原型都指定了需要操作的字节数,注意,是字节数,如果是多字节数据,则要乘以数据长度。
2、在使用memcpy时,源地址如果与目的地址重叠,则结果为定义;
memmove相比memcpy可以正确处理源地址如果与目的地址重叠的情况,因为memmove的实现利用了临时位置,这个临时位置可以保证源与目的地址不重叠,但是它的速度可能会比memcpy慢一些。
- 《c和指针》(四)
- C和指针 四
- 《C和指针》学习笔记(四)
- [C++]指针和引用(四)
- 《C和指针》读书笔记(四)
- C语言基础教程(四)指针、结构、联合和枚举
- c语言指针(四)
- C指针基础(四)
- 《C和指针》学习笔记四/函数/
- c++Primer,四,数组和指针
- C专家编程--指针和数组(四) 指针对数组的访问
- C语言基础(四)(指针)
- Objective-C 入门(四)指针
- c语言基础(四)之指针
- c与指针(四) 语句
- 【C语言复习(四)】指针基础
- C语言基础(四)指针 数组
- c语言基础(四)指针篇
- HttpUrlConnection解析Xml
- 高可用集群
- 赛码解题报告(五)
- android开发笔记
- Android之Launcher分析和修改5——HotSeat分析
- 《c和指针》(四)
- 网@上@信@息@提@取
- POI 2014
- Java - I/O
- New begin
- Android中String资源文件的可变参数设定(String.format()的详细用法)
- 第四周项目3——单链表应用(1)
- 如何理解主机、服务器之间的差别
- Android中Notification详细讲解(一)