最近写代码发现对于字符串的处理有很多函数都不会使用,想借此来巩固和分享一些要注意的。
开始也是最重要的,使用字符串函数需要加上头文件 #include<string.h>
定义字符串的相关的需要注意的地方已经在之前的文章中提到过(后续还会增加关于指针定义的方法)
目录
strcmp(str1,str2):判断字符串str1和str2是否相同
strlen() : 获取一个字符串的长度
需要注意的问题是它的使用方法
其它求字符串长度函数
length()函数
char a[]="asdfg";
printf("%d",a.strlen());
这个就是和C++中的length()函数搞混了。在C++中是需要声明string型变量,才可以用length()函数来进行求长度,如:
string str = "abcdef";
printf("%d", str.length());
运行结果就是
6
要注意的是这里是不会包括结束字符‘\0’
但是如果这样写
char s[] = "asdfghjkl";
printf("%d", s.length());
就会报错,所以需要注意函数的用法。
size()函数
然后要补充的是size()函数,同样也可以求字符串的长度,不过也只能求string声明变量的函数,如:
string s= "asdfghjkl";
printf("%d\n", s.size());
运行结果就是:
9
同样也没有包含结束符‘\0’
除此之外还可以求用vector定义的数组的长度
vector <int> m = {1,2,3,4,5};
printf("%d", m.size());
结果是
5
strlen()函数
我们再回到正题strlen()函数的用法
strlen(字符串名称)
这个函数只适用于数组求长度,string类型定义的函数则不适用,如:
char a[] = "123456";
printf("%d", strlen(a));
输出结果为
6
而如果这样定义:
string b = "qwertt";
printf("%d", strlen(b));
语法就有错误
所以计算字符串长度一定要选择正确的计算长度的方法。
strcmp(str1,str2):判断字符串str1和str2是否相同
需要注意的是在C语言中不可直接使用 (不过现在很多编译器都有改进,比如vs2022这样的语法可以允许)
str1==str2
判断两个字符串是否相同应使用函数strcmp(str1,str2)
如果str1和str2相同,则返回值为0
char str1[] = "abcdef";
char str2[] = "abcdef";
printf("%d", strcmp(str1, str2));
输出结果为:
如果str1大于str2,则返回值为1
char str1[] = "abcdefg";
char str2[] = "abcdef";
printf("%d", strcmp(str1, str2));
输出结果为:
要注意的是这里比较的不是字符串的长度,而是一一比较每个字母的ASCⅡ码,比如:
char str1[] = "g";
char str2[] = "abcdef";
printf("%d", strcmp(str1, str2));
输出结果为:
这是因为g的ASCⅡ码的值大于a,所以str1>str2
如果str1小于str2,则返回值为-1
同样是一一比较每个字母的ASCⅡ码如:
char str1[] = "abcdef";
char str2[] = "g";
printf("%d", strcmp(str1, str2));
输出结果为: