字符串函数
就先讲几个我学到的(最常用到的),首先要想使用 下列我说到的三个字符串函数,必须要有 string.h头文件,否则将使用不了这些函数。
第一个 strlen()函数
#include<stdio.h>
int main()
{
char s[100];
printf("input the character:");
gets(s); //gets()函数 输入字符串需要用到这个
int length = 0;
for( int i = 0; s[i] != '\0'; i++) //s[1] != '\0'; 这个很重要
{
length++;
}
printf("字符串的%s的长度=%d",s,length);
return 0;
}
(s[1] != '\0'; 这个很重要,结束求字符串长度的循环必须要用到的,“\0”这是空字符,C语言用它标记字符串的结束,这就意味着数组的容量必须至少比待存储字符串中的字符数多一。)
这是一个用来求字符串长度的一个循环,那么还有什么更简便的方法么??嘻嘻,最近学到的 新的函数 ---
strlen()函数就不需要使用循环,就直接可以统计出字符串的长度。
看代码
#include<stdio.h>
#include<string.h> //strlen()函数的原型在该头文件中
int main()
{
char s[100];
printf("请输入字符串:");
gets(s);
printf("输出字符串%s的长度=%d",s,strlen(s)); //使用了strlen()函数
return 0;
}
用法,strlen();括号里面为变量
第二个 strcat()函数
看代码
#include<stdio.h>
#include<string.h> //strcat()函数的原型在该头文件中
int main()
{
char s[100],m[100];
printf("请输入字符串:");
gets(s);
gets(m);
strcat(s,m);//strcat() 函数拼接了数组s m的字符串,并且将拼接后的字符串装进了数组s里面
int length = 0;
for( int i = 0; s[i] != '\0'; i++)
{
length++;
}
printf("请输出拼接后字符串%s的长度=%d",s,length);
return 0;
}
当当当,这样就可以把第二个数组里字符串直接接到第一个数组的字符串的后面了,就不用遍历了,使程序运行速度变快了,多方便啊
用法:strcat(一个字符串数组,一个字符串数组);
第三个 strcmp()函数
这个函数是可以将已经存储了字符串的两组数组进行比较,也就是说可以比较两个不同大小数组里已经存储的字符串长度大小
看代码
/*比较两组字符串的长度
如果两个字符串长度相同,则输出 相等
若不相同,则输出 不等
*/
#include<stdio.h>
#include<string.h>
int main()
{
char s[100],m[100];
printf("请输入两组字符串:");
gets(s);
gets(m);
if(strcmp(s,m) != 0) //strcmp() 函数可以比较两组字符串的长度
{
puts("不等!");
}
else
{
puts("相等!");
}
return 0;
}
这里需要注意的地方,strcmp()函数比较字符串,如果两个字符串长度相同,该函数就返回0,否则就会返回非零值。
这也是为什么我的 if()括号里面的判断条件是 strcmp(s,m)!= 0 的原因
下面再来看看 strcmp()的返回值吧
为了展示运行的结果,这里就插入图片
通过代码,我们可以发现,strcmp()比较字符串和其本身时,返回值是0;在字母表中第一个字符位于第二个字符前面,这两个字符做比较,strcmp()中就返回-1;在字母表中第一个字符位于第二个字符后面,这两个字符做比较,strcmp()中就返回1.由此也可以看出,在字母表中,任何大写字母的位置一直都位于任何小写字母的前面。
后面会继续学习其他字符串函数。