c语言学习笔记40之字符串函数

时间:2021-05-14 01:32:11
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函数的执行并不会出错,这是因为变量在内存中的位置很稀疏,如果字符数组后的一块内存并没有被其他变量等占用,程序不会出错,但如果该块内存不巧已经被分配,程序可能因此而崩溃。