文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C语言字符串函数怎么用

2023-06-22 06:08

关注

这篇文章主要介绍C语言字符串函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

一.strlen函数模拟

字符串以‘\0'作为结束标志,strlen函数返回的是在字符串中‘\0'前面出现的字符个数(不包括‘\0');

有三种方法可以实现该操作:

①计数器方式

②不能创建临时变量计数器

③指针-指针

 方法一:计数器方式

int my_strlen(const char* str){int count = 0;//定义count用来记录字符串数组中字符数while (*str){count++;str++;}return count;}

方法二:不能创建临时变量计数器

int my_strlen1(const char* str)//以递归的方式完成字符串长度函数的模拟{if (*str == '\0')return 0;return 1 + my_strlen1(str + 1);}

方法三:指针-指针

指针相减得到的是两个指针之间差距的元素个数,可以根据这种方式来实现strlen函数的模拟

int my_strlen2(char* s)//以此方式进行模拟时不能使用静态const{char* p = s;while (*p != '\0')p++;return p - s;}

测试样例

C语言字符串函数怎么用

C语言字符串函数怎么用

二. strcpy函数模拟

将src所指向的字符串包括‘\0'复制到dest所指向的字符串中

源字符串(src所指向的字符串)必须以‘\0'结束

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

int main(){char s[10] = { 'a','b','c','d','e','f' };char s1[10] = { 'c','c','b' };printf("%s", my_strcpy(s, s1));//将s1中的字符复制到s空间中return 0;}char* my_strcpy(char* dest, const char* src){char* ret = dest;assert(dest != NULL);//断言assert(src != NULL);//断言while ((*dest++ = *src++));return ret;}

测试结果 

C语言字符串函数怎么用

C语言字符串函数怎么用

最终将s2中以‘\0'为结束符的字符串复制到s中 

 三.strcat函数模拟

将src所指向的字符串包括‘\0'复制到dest所指向的字符串后面

源字符串必须以‘\0'结束

目标空间*dest需足够大,以确保能够存放源字符串(*src)

char* my_strcat(char* dest, const char* src){char* ret = dest;assert(dest != NULL);assert(src != NULL);while (*dest)//访问到dest所指向字符串的最后一个字符位置{dest++;}while ((*dest++ = *src++));//将src指向的字符串复制到dest所指向字符串的后面return ret;}

 测试样例

C语言字符串函数怎么用

C语言字符串函数怎么用

将src指向的字符串复制到dest指向的字符串后面,最终得到结果

C语言字符串函数怎么用

四.strcmp函数模拟

 strcmp函数的作用是比较字符串,用法如下strcmp(字符串1,字符串2),它会比较这两个字符串:

如果字符串1等于字符串2,strcmp函数返回0;

如果字符串1小于字符串2,strcmp函数返回一个负值;

如果字符串1大于字符串2,strcmp函数返回一个正值.

 具体实现如下:

int my_strcmp(const char* dest, const char* src){int ret = 0;assert(src != NULL);assert(dest != NULL);while (!(ret = *(unsigned char*)src - *(unsigned char*)dest) && *dest){++src;++dest;}if (ret < 0)ret = -1;else if (ret > 0)ret = 1;return ret;}

以上是“C语言字符串函数怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯