做app 的模板下载网站有哪些内容,建了qq群 如何快速推广,网站建设运营协议,贪玩传奇前言 C 语言中对字符和字符串的处理很是频繁#xff0c;但是 C 语言本身是没有字符串类型的#xff0c;字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数 . 1.求字符串长度函数
strlen函数
我们要求一个字符串函数的长度…前言 C 语言中对字符和字符串的处理很是频繁但是 C 语言本身是没有字符串类型的字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数 . 1.求字符串长度函数
strlen函数
我们要求一个字符串函数的长度strlen通常是我们的第一选择它被包含在string.h头文件中我们以下要介绍的字符函数和字符串函数都被包含在这个头文件中这个函数的声明为
size_t strlen ( const char * str );
为什么它的返回类型是size_t呢首先我们要知道size_t是无符号整型类型因为我们字符的长度不可能是负数所以我们的返回值选择用无符号整型那么这个函数内部是如何实现的呢
我们写一段代码演示
#includestdio.h
#includestring.h
int main()
{char arr[] abcdef;size_t sz strlen(arr);printf(%zd\n, sz);return 0;
}
我们来看结果 一个字符串的末尾隐藏着一个\0strlen就是通过一个一个字符记数找到\0后就停下然后返回那个记数的值画图演示 strlen函数从a开始走只要没遇到\0就一直往后走走一个字符记数加一直到遇到\0时他就停止向后走函数工作结束并返回那个记数的值。
注意事项 1.字符串已经 \0 作为结束标志 strlen 函数返回的是在字符串中 \0 前面出现的字符个数不包 含 \0 ) 。 2. 参数指向的字符串必须要以 \0 结束。 3.注意函数的返回值为 size_t 是无符号的 易错 。 总结strlen函数是一个求字符串长度的函数内部的工作原理是只要不遇到\0就一直向后走并记数遇到\0就停下。
2.长度不受限制的字符串函数
strcpy函数
strcpy是用来将一个字符串复制到另一个数组的函数函数声明为
char* strcpy(char * destination, const char* sourse)
因为我们要从一个数组中复制字符串到另一个数组中所以用两个字符指针接收它们的首地址sourse指向的函数是不需要改变它里面的值的所以我们用const来修饰它防止有人改变它的值增加程序的鲁棒性在复制完内容后我们把接收了字符串的那个数组的首地址返回代码演示
int main()
{char arr1[] abcdef;char arr2[20] { 0 };strcpy(arr2, arr1);printf(%s\n, arr2);return 0;
}
我们来看一下结果 使用strcpy函数arr1数组中的字符串很轻松就被复制到了arr2数组中但是函数也有一些注意事项需要遵守否则会出现一些无法预知的问题 。
注意事项
1.源数组字符串必须以\0结尾。
2.目标数组空间必须足够大能够放得下源字符串的内容。
3.目标空间必须可变。
总结strcpy是一个复制字符串的函数
stract函数
stract函数的功能是将一个字符串复制到另一个字符串的结尾使得到字符内容的字符串变长函数声明为
char * strcat ( char * destination, const char * source );
它的函数声明与strcpy函数一样就不过多介绍了假设我们要进行这样的操作用代码演示
int main()
{char arr1[20] abcdrf;char arr2[] wed;strcat(arr1, arr2);printf(%s\n, arr1);return 0;
}
代码中表示我们要将arr2数组中的内容放到arr1数组的结尾 我相信通过代码的演示大家已经了解了strct函数的使用这里还有使用此函数的一些注意事项。
注意事项 1.源字符串必须以 \0 结束。 2.目标空间必须有足够的大能容纳下源字符串的内容。 3.目标空间必须可修改。 strcmp函数
strcmp是字符串比较函数使用它可以对两个字符串比较在排序等情况中可以使用此函数我们来看看这个函数的声明吧
int strcmp ( const char * str1, const char * str2 );
在介绍它的函数声明之前我们先介绍这个函数的工作原理。我们向strcmp函数放入两个数组的首地址 它会对两个字符串的字符进行比较如果相等就往后比只要有一位分出大小就会分出大小假设我们有一个字符串abcdef和另一个abcq使用strcmp函数进行比较前三位都是abc所以会往下比当比到第四位时是d和q进行比较c的ascall码为99q的ascall码为112当有一位字符比出大小时就会判定abcq比abcdef大因为abcdef在前所以函数判定的结果是小于返回小于0的数字如果比到最后两个字符串都一样则返回0如果前面那个字符串比后面那个字符串大则返回一个大于0的数字。
现在我们再看函数声明也不难理解这个函数的两个参数是指针用来接收两个数组的首地址因为只要比较它们的值不需要改变它们的值所以用const修饰。
例如我们要比较两个数组中的字符串我们用代码演示
int main()
{char arr1[20] abcdrf;char arr2[] abcq;int retstrcmp(arr1, arr2);printf(%d\n, ret);return 0;
}
看结果怎么样 函数判定abcdef比abcq小所以返回了一个小于0的数字。
标准规定 1.第一个字符串大于第二个字符串则返回大于 0 的数字 2.第一个字符串等于第二个字符串则返回 0 3.第一个字符串小于第二个字符串则返回小于 0 的数字 未完待续。。。。。。