• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

C语言字符函数与字符串函数详解

c语言 搞代码 4年前 (2022-01-06) 99次浏览 已收录 0个评论
文章目录[隐藏]

这篇文章主要给大家介绍了关来源gao@daima#com搞(%代@#码网于C语言字符/字符串的相关函数,文中通过示例代码总结的非常详细,对大家学习或者使用C语言具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

本章重点

重点介绍处理字符和字符串的库函数的使用和注意事项

1.求字符串长度 strlen

2.长度不受限制的字符串函数 strcpy ,strcat, strcmp

3.长度受限制的字符串函数 strncpy,strncat ,strncmp

4.字符串查找 strstr,strtok

5.错误信息报告 strerror

6.字符操作

7.内存操作函数 memcpy,memmove,memset ,memcmp

前言

C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者 字符数组 中。 字符串常量 适用于那些对它不做修改的字符串函数。

1.strlen函数

size_t strlen ( const char * str );

  • 字符串已经 ‘\0’ 作为结束标志,strlen函数返回的是在字符串中 ‘\0’ 前面出现的字符个数(不包含 ‘\0’ )。
  • 参数指向的字符串必须要以 ‘\0’ 结束。
  • 注意函数的返回值为size_t,是无符号的( 易错 )
  • 学会strlen函数的模拟实现 (计数器、指针-指针、递归)

讲解:

注意点1

有的编译器可能用int来接收strlen函数的返回值会报错,因为strlen函数返回值是size_t( unsigned int 无符号整型 )

 char arr[] = "abcdef"; //错误示范 int sz1 = strlen(arr); //正确示范 size_t sz = strlen(arr);

注意点2

注意函数的返回值为size_t,是无符号的( 易错 )

 //3 - 8  0) { printf("哈哈哈~~"); } else printf("吼吼吼!"); return 0; } //运行结果是   哈哈哈~~

对比代码:

 int main() { if ((int)strlen("abc") - (int)strlen("abcdefgh") > 0) { printf("哈哈哈~~"); } else printf("吼吼吼!"); return 0; } //运行结果是   吼吼吼!

2.strcpy

char* strcpy(char * destination, const char * source );

  • 源字符串必须以 ‘\0’ 结束。
  • 会将源字符串中的 ‘\0’ 拷贝到目标空间。
  • 目标空间必须足够大,以确保能存放源字符串。
  • 目标空间必须可变。( 即:不能是不可修改的常量字符串 )
  • 学会模拟实现。

讲解:

注意点1:

我们发现,copy时,将源字符串毫无保留的( 包括末尾的 ‘\0’ )一块copy到目标字符串中!!

注意点2:

如果源字符串中间本身就含有’\0’,那么我们同样还是取到遇见的第一个‘\0′ ,不会继续往后打印的!!!

注意点3:

目标空间必须足够大,以确保能存放源字符串。

 //错误示范 //目标字符串空间太少 char arr1[] = "xxx"; char arr2[] = "hello\0abc"; strcpy(arr1, arr2);

注意点4:

目标空间必须可变。

模拟strcpy函数

代码1:

 #include #include void* my_strcpy(char* dest, const char* src) { assert(dest && src); char* ret = dest; while (*src) { *dest = *src; dest++; src++; } *dest = '\0'; } int main() { char arr1[] = "xxxxxxxxxxxxxxxx"; char arr2[] = "abc"; my_strcpy(arr1, arr2); printf("%s", arr1); return 0; }

代码2:(升级版~~)

 #include #include char* my_strcpy(char* dest, const char* src) { assert(dest && src); char* ret = dest; while (*dest++ = *src++) { ; } return ret; } int main() { char arr1[] = "xxxxxxxxxxxxxxxx"; char arr2[] = "abc"; printf("%s", my_strcpy(arr1, arr2)); return 0; }

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注gaodaima搞代码网的更多内容!

以上就是C语言字符函数与字符串函数详解的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:C语言字符函数与字符串函数详解

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址