当前位置: 首页 > news >正文

Day28~实现strlen、strcpy、strncpy、strcat、strncat

实现strlen、strcpy、strncpy、strcat、strncat

#include <stdio.h> size_t my_strlen(const char *src) { size_t len = 0; while (*src != '\0') { len++; src++; } return len; } char *my_strcpy(char *dest, const char *src) { if (dest == NULL || src == NULL) // 判断输入的字符是否为空 { return NULL; // 如果为空,就返回空 } char *temp = dest; // 将dest的地址赋值给一个临时变量 while (*src != '\0') // 遍历要拷贝的字符 { *temp = *src; // 将src的值赋给temp src++; // src地址后移 temp++; // temp地址后移 } *temp = '\0'; // 最后一位为\0 return dest; // 返回dest } char *my_strncpy(char *dest, const char *src, size_t n) { if (dest == NULL || src == NULL) { return NULL; } char *temp = dest; size_t i; for (i = 0; (i < n) && (*src != '\0'); i++) { *temp = *src; src++; temp++; } for (; i < n; i++) { *temp = '\0'; } return dest; } char *my_strcat(char *dest, const char *src) { if (dest == NULL || src == NULL) { return NULL; } char *temp = dest; while (*temp != '\0') { temp++; } while (*src != '\0') { *temp = *src; temp++; src++; } *temp = '\0'; return dest; } char *my_strncat(char *dest, const char *src, size_t n) { if (dest == NULL || src == NULL) { return NULL; } char *temp = dest; while (*temp != '\0') { temp++; } size_t i; for (i = 0; (i < n) && (*src != '\0'); i++) { *temp = *src; src++; temp++; } for (; i < n; i++) { *temp = '\0'; } return dest; } int main() { char dest[100] = "Hello World"; char src[100] = "Hello World"; // char *result1 = my_strcpy(dest, src); // char *result2 = my_strncpy(dest, src, 3); // size_t result = my_strlen(src); // char *result3 = my_strcat(dest, src); char *result4 = my_strncat(dest, src, 3); // printf("%s\n", result1); // printf("%s\n", result2); // printf("%ld\n", result); // printf("%s\n", result3); printf("%s\n", result4); return 0; }
http://www.gsyq.cn/news/89702.html

相关文章:

  • 学习c语言第一天的学习笔记
  • 端侧多模态新纪元:MiniCPM-V 2.6重新定义移动端AI交互体验
  • 技术工具类文章仿写专家Prompt指南
  • 利用用户的通话记录、通讯录以及短信内容可以极大提高销售效率和精准度
  • 【YOLO11-MM 多模态目标检测】动态门控MCFGatedFusion特征融合【自研模块】、抛弃Concat、实现特征动态补偿
  • LeetCode 189. 旋转数组 | 三步反转最优解全拆解
  • 【YOLO11-MM 多模态目标检测】MSAA多尺度特征融合、轻量而且高效、抛弃Concat普通融合
  • 终极英雄联盟智能助手:三步实现游戏自动化完全指南
  • 亲测!高性价比AI数字员工租赁公司分享
  • LLM本地推理全流程:基于LMDeploy的pipeline实战指南
  • OpenAI开源安全推理引擎震撼发布:gpt-oss-safeguard改写AI内容治理规则
  • 匹配回文串:利用KMP算法求解
  • 百度网盘极速下载终极指南:3步实现高速下载体验
  • WebRL-Llama-3.1-8B震撼发布:开源模型突破网页自动化壁垒,42.4%成功率引领行业变革
  • Linux基础命令和工具详解,让你轻松应对各种任务!
  • C语言实现hashmap(附带源码)
  • 阿里通义实验室发布Wan2.2开源视频模型:MoE架构革新引领AIGC创作新范式
  • 职场中令领导同事反感的行为(不定期更新)
  • 5个秘诀让你的Windows右键菜单秒响应:终极解决方案揭秘
  • 超级计算力量:一文看懂GPU并行计算CUDA
  • jsonnet介绍和使用
  • 2024年8月中文大模型战力榜:国产模型全面崛起改写全球竞争格局
  • Redis持久化机制详解:RDB和AOF对决,哪个更胜一筹?
  • C语言实现队列(附带源码)
  • JavaScript 的参数对象 `arguments` 与 命名参数的同步行为:在非严格模式下的内存陷阱
  • Flutter 通用弹窗组件 CustomDialogWidget:全自定义布局 + 多场景适配
  • 突破大模型推理瓶颈:阶跃星辰提出MFA机制,KV缓存降幅超93%且性能反升
  • Flutter 通用列表项组件 CommonListItemWidget:全场景布局 + 交互增强
  • [AI编程] ClaudeCode:智能体编程的最佳实践
  • 《数据库运维》 郭文明 实验1 MySQL数据库服务器配置核心操作与思路解析