【C/C++】字符/字符串函数(1)——由string.h提供
零.导言
什么是字符/字符串函数呢?
其实就是一类用于处理字符和字符串的函数。
而其中一部分函数包含在头文件 string.h 中,有 strlen strcpy strcat strcmp strncpy
strncat strncmp strstr strtok strerror 等等
接下来我将逐个讲解这些函数。
一.strlen
strlen函数就是用来计算字符串长短的函数,当strlen读取到字符串中的 '\0' 时,就会停止读取。
char str[] = "asdghj";
int num = strlen(str);
注意:当 str 中不包含 '\0' 时,strlen 的读取会越界,导致内存溢出,如:
char str[] = {'a','b','c','d'};
int num = strlen(str);
此时 num 的大小明显异常。
以这种形式输入的字符串不包含 '\0' ,此时程序就会异常运行。
二.strcpy
strcpy函数是用来复制(copy)字符串的函数,使用方式如下图代码所示:
char str[7] = "asdghj";
char tmp[7] = { 0 };
strcpy(tmp, str);
此处就把 str(放在后面) 复制到了 tmp(放在前面) 中,验证:
需要注意的是,此处的 tmp 需要给定一个足够大的空间以储存 str 的数据,同时要注意数组大小要是一个确定的值,不能空着,否则报错:
三.strcat
strcat函数是用于拼接数组的函数,使用方式如下图代码所示:
char str[20] = "foufou";
char tmp[20] = "ALICE";
strcat(tmp, str);
看一下效果:
空可以看到这里就把 str 放到 tmp 后面去了。
同样值得注意的是:要有足够的空间来拼接数组,否则:
依旧是报错~
四.strcmp
strcmp函数是用来比较两个数组的函数,标准规定:
- 第一个字符串大于第二个字符串时,返回一个大于零的数字。
- 第一个字符串等于第二个字符串时,返回0。
- 第一个字符串小于第二个字符串时,返回一个小于零的数字。
那要这么比较字符串呢?
其实就是比较相应位置上字符的ASCII码值的大小,如:
完这样我们就比较了字符串的大小。
五.相关链接
C函数的概念-CSDN博客。
【C/C++】模拟实现strlen-CSDN博客
未完待续