c语言学习笔记40之字符串函数
2016-06-28 22:14
435 查看
strcmp函数用于对两个C风格字符串进行比较,此处的比较不是比较两个字符串的长度,而是逐个比较字符的ASCII码,举例来说,如果字符串1以字母A开头,而字符串2以B开头,则不论两个字符串长度如何,不论两个字符串后续字串是什么,字符串2“大于”字符串1成立(B的ASCII码66大于A的ASCII码65),如果打头字符相同,则比较第2个字符,依此类推,如果第2个字符相同,则比较第3个字符……
如果出现诸如“ABCD”和“ABCD123”这样的情况,长度长的字符串“大于”长度短的字符串。换言之,只有两个字符串长度相同、每个字符相等时,才称两个字符串相等。
strcmp函数的原型为:
int strcmp(字符串1,字符串2);
字符串连接函数的原型为:
char* strcat(字符串1,字符串2);
该函数会将字符串2附在字符串1后面,这样,字符串1的长度会有所增加,返回的指针指向字符串1。大家也许会有疑问:是否要求字符串1所在的字符数组有足够的内存空间来容纳字符串2。
原则上,答案为“是,字符串1所在的字符数组应有足够的内存空间来容纳字符串2”,否则会出现内存越界的错误,这和前面strcpy函数中要求目的字符串的长度要大于源字符串的长度是一回事。
实际上,即使两个条件不满足,“大部分情况下”,strcat函数和strcpy函数的执行并不会出错,这是因为变量在内存中的位置很稀疏,如果字符数组后的一块内存并没有被其他变量等占用,程序不会出错,但如果该块内存不巧已经被分配,程序可能因此而崩溃。
如果出现诸如“ABCD”和“ABCD123”这样的情况,长度长的字符串“大于”长度短的字符串。换言之,只有两个字符串长度相同、每个字符相等时,才称两个字符串相等。
strcmp函数的原型为:
int strcmp(字符串1,字符串2);
字符串连接函数的原型为:
char* strcat(字符串1,字符串2);
该函数会将字符串2附在字符串1后面,这样,字符串1的长度会有所增加,返回的指针指向字符串1。大家也许会有疑问:是否要求字符串1所在的字符数组有足够的内存空间来容纳字符串2。
原则上,答案为“是,字符串1所在的字符数组应有足够的内存空间来容纳字符串2”,否则会出现内存越界的错误,这和前面strcpy函数中要求目的字符串的长度要大于源字符串的长度是一回事。
实际上,即使两个条件不满足,“大部分情况下”,strcat函数和strcpy函数的执行并不会出错,这是因为变量在内存中的位置很稀疏,如果字符数组后的一块内存并没有被其他变量等占用,程序不会出错,但如果该块内存不巧已经被分配,程序可能因此而崩溃。
相关文章推荐
- c语言中如何返回一个数组函数
- 软件开发C++四年工作总结
- C++互斥锁与条件变量的封装使用
- C++ 对16进制字符串进行奇校验
- C/C++头文件一览
- 如果是初学C语言请看完 一些成功人士的心得
- C++ - 计蒜客 - 跳跃的最小次数(bfs)武士风度的牛
- C++ 类中的const关键字
- 解读VC++编程中的文件操作API和CFile类
- 如何编写异常安全的C++代码
- (转)C++ 字符串类型转换为其他字符串
- [LeetCode]Delete Digits
- (转)C++知识点
- (转)C/C++面试题
- 根据客户端套接字获取客户机的IP和端口号,其形式为IP:port
- C++中enum的使用
- C++中enum的使用
- C/C++ 获取文件大小
- c语言之split实现
- C++ Coding Tricks Note