strcat与strcpy与strcmp与strlen

C语言中strcpy,strcmp,strlen,strcat函数原型 今天去文思创新面试,考官问了我一个简单的实现,即:自己编写strcpm的实现,IBM曾经也考过写strcpy原型,这几个函数在面试的时候经常被考到,很具有代表性,突然被问起还真有点措手不及呢。现在记下供大家学习和以后温习:(下面的程序经本人通过)1、Strcat函数原型如下:char *strcat(char *strDest, const char *strScr) //将源字符串加cons 阅读详情

strcat

  原型:extern char *strcat(char *dest,char *src);
  用法:#include <string.h>
  功能:把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
  说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
  返回指向dest的指针。
  举例:
  // strcat.c
  #include <syslib.h>
  #include <string.h>
  main()
  {
  char d[20]="Golden Global";
  char *s=" View";
  clrscr();
  strcat(d,s);
  printf("%s",d);
  getchar();
  return 0;
  }
  程序执行结果为:

  Golden Global View

strcpy

  原型声明:extern char *strcpy(char *dest,char *src);
  头文件: string.h
  功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
  说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
  返回指向dest的指针。

典型实现

  /**********************
  * C语言标准库函数strcpy的一种典型的工业级的最简实现
  * 返回值:
  * 返回目标串的地址。
  * 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。
  * 参数:
  * strDeatination
  *          目标串
  * strSource
  * 源串
  ***********************/
  char *strcpy(char *strDestination, const char *strSource);
  {
  assert(strDestination && strSource);
  while(*strDestination++ = *strSource++); 
  return strDestination;
  }

strcpy

原型声明:extern char *strcpy(char *dest,char *src);

  头文件: string.h
  功能:把src所指由NULL结束的字符串复制到dest所指的数组中。
  说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。
  返回指向dest的指针。

典型实现

  /**********************
  * C语言标准库函数strcpy的一种典型的工业级的最简实现
  * 返回值:
  * 返回目标串的地址。
  * 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。
  * 参数:
  * strDeatination
  *          目标串
  * strSource
  * 源串
  ***********************/
  char *strcpy(char *strDestination, const char *strSource);
  {
  assert(strDestination && strSource);
  while(*strDestination++ = *strSource++); 
  return strDestination;
  }

strcmp

  原型:extern int strcmp(char *s1,char * s2);
  用法:#include < string.h>
  功能:比较字符串s1和s2。
  说明:
  当s1<s2时,返回值<0
  当s1=s2时,返回值=0
  当s1>s2时,返回值>0
  即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:
  "A"<"B" "a">"A" "computer">"compare"
  举例:
  // strcmp.c
  #include <syslib.h>
  #include <string.h>
  int main()
  {
  char *s1="Hello, Programmers!";
  char *s2="Hello, programmers!";
  int r;
  clrscr();
  r=strcmp(s1,s2);
  if(!r)
  printf("s1 and s2 are identical");
  else
  if(r<0)
  printf("s1 less than s2");
  else
  printf("s1 greater than s2");
  getchar();
  return 0;

  }

strlen

   原型:extern unsigned int strlen(char *s);
   用法:#include < string.h>
   功能:计算字符串s的(unsigned int型)长度
   说明:返回s的长度,不包括结束符NULL。
   举例:
  // strlen.c
  #include <syslib.h>
  #include <string.h>
  main()
  {
  char *s="Golden Global View";
  clrscr();
  printf("%s has %d chars",s,strlen(s));
  getchar();
  return 0;
  }
  下面给大家提供几种实现strlen函数的源代码,供大家参考:
  -------------------------------------------------1:start------------------------------------
  #include <stdio.h>
  #include <assert.h>
  typedef unsigned int u_int;
  u_int Mystrlen(const char *str)
  {
  u_int i;
  assert(str != NULL);
  for (i = 0; str != '\0'; i++);
  return i;
  }
  ------------------------------------------------1:end--------------------------------------
  -------------------------------------------------2:start--------------------------------------
  int strlen(const char *str) 
  { 
  assert(str != NULL); 
  int len = 0; 
  while((*str++) != '\0') 
  len++; 
  return len; 
  }http://baike.baidu.com/edit/id=736226
  ------------------------------------------------2:end ------------------------------------------
  ------------------------------------------------3:start------------------------------------------
  int strlen(const char *str) 
  { 
  assert(str); 
  const char *p = str; 
  while(*p++!=NULL); 
  return p - str - 1; 
  }
  -------------------------------------------------4:end-----------------------------------------
  -------------------------------------------------5:start----------------------------------------
  int strlen(const char *str) 
  { 
  assert(str); 
  const char *p = str; 
  while(*p++); 
  return p - str - 1; 
  }
  -----------------------------------------------6:end----------------------------------------
  简单的总结一下:
  以上各种实现的方式都是大同小异的,有的用的是变量,有的用的是指针。
  其中,最后一个用的是递归的方式。其实,在实现 库函数的时候,是规定不可以
  调用其他的库函数的,这里只是给大家一个方法,不用变量就可以实现strlen。
字符串函数strlen的用法实现(strcpy、strcat、strcmp) 文章目录前言一、求字符串长度strlen二、使用步骤1.引入库2.读入数据总结 前言 本文主要介绍字符函数和字符串函数的使用以及相应的实现过程,进一步加深了解C语言中对字符和字符串库函数的使用。 一、求字符串长度 在c语言中,求字符串的长度用 strlen 函数。 strlen 其标准格式为: size_t strlen ( const char * str ); 该函数参数为const修饰的字符指针,其返回值为无符号整型(size_t)。 该函数在使用过程中要注意以下几点: (1.. 阅读详情

相关推荐

MATLAB仿真实战:双有源桥(DAB)变换器的扩展移相调制(EPS)全流程解析

本文提供了一份详细的MATLAB/Simulink仿真实战指南,手把手解析双有源桥(DAB)变换器在扩展移相调制(EPS)下的全流程建模。内容涵盖从核心原理、主功率电路搭建、EPS驱动信号生成,到仿真运行、波形分析及模型优化的完整步骤,旨在帮助工程师和研究者快速掌握DAB变换器的仿真与性能验证方法。

o4p5q6r7s的博客 503

strcat函数详解:字符串【追加】的利器

strcat函数的详解及模拟实现strcat函数

天行健、君子以自强不息 7418

从Gotham到Foundry:拆解Palantir三大产品线,看它如何用‘本体’统一企业数据与AI

本文深入解析Palantir的三大产品线Gotham、Foundry和Apollo,揭示其如何通过独特的'本体'架构实现企业数据与AI的无缝融合。从国防情报到商业决策,Palantir的产品架构展现了强大的数据整合与AI赋能能力,为企业构建数字孪生提供革命性解决方案。

weixin_30823001的博客 321

【C库函数】strcat函数详解

详解strcat函数

威威的博客 2万+

贝叶斯校准在计算机模型不确定性分析中的实践指南

本文深入探讨了贝叶斯校准在计算机模型不确定性分析中的核心原理与实践方法。通过将模型从“黑箱”转变为“透明箱”,该方法系统量化了参数不确定性、模型结构缺陷及观测误差。文章重点阐释了如何利用高斯过程作为代理模型和模型不足函数,构建完整的贝叶斯校准框架,并提供了从数据准备、模型训练到MCMC推断及不确定性分析的实战指南,最终实现更可靠的预测与决策支持。

weixin_29088655的博客 292

openvpn 安装 (Alibaba Cloud Linux release 3 (Soaring Falcon))

1.错误:configure: error: libnl-genl-3.0 package not found or too old. Is the development package and pkg-config (/usr/bin/pkg-config) installed?# ta.key在/etc/openvpn/server/目录下可以如下配置,否则需要写完整路径。# 配置账号密码登录客户端需要ca证书(可选)# 证书校验算法 配置上面生成的完整路径。# ca证书 配置上面生成的完整路径。

dubhe_zhao的博客 2149

strcat函数详解看这一篇就够了-C语言(函数实现、使用用法举例、作用、与strncat的区别)

首先要明确strcat的功能是:将参数dest字符串和参数src字符串拼接起来 目录 函数介绍 与strncat的区别 函数实现: 用法示例: 结果展示: 函数介绍 函数原型:char* strcat(char* dest,const char* src) 头 文 件:#include <string.h> 返 回 值:返回dest字符串起始地址 说 明: 1、dest和src字符串必须’\0’结束 2、目标空间必须可修改(前面不能加const并且不能说常量字符...

kim的博客 3万+

Ubuntu 20.04 系统备份和还原

最近大家Ubuntu开发环境,经常出现搭着搭着系统就挂了,于是开始琢磨了Ubuntu系统的备份和还原,以备不时之需,Linux环境搭建实在是有点太细,好多情况下,就算曾经搭建过一遍,再次搭建有些包还是忘了安装,做好备份是十分必要的。 经过了一番研究,Ubuntu备份有很多方式:根目录tar、dd、Systemback(1.0版本已经不维护了,2.0版本收费)等等,最终决定使用 —— Timesift, 因为方便一些。 文章参考:小马虎的救星——Timeshift Timeshift Timeshift,是L

Z_Paper的博客 2万+

【C语言】strcat、strncat详解并模拟实现

strcat是连接/追加字符串的函数,两个形参都是指针,函数最终返回一个指向目标字符串首元素地址的指针。 strncat函数将源字符串的前num个字符连接到目标字符串的末端,连接后的结果放在目标字符串当中,函数有三个形参,两个指针,一个无符号整型,函数返回一个指向目标字符串首元素地址的指针。

m0_73968621的博客 6943

Word论文插入带有方括号序号的参考文献——尾注+交叉引用

文章目录1. 尾注功能2. 为参考文献的序号添加方括号3. 调整参考文献前的序号大小4. 重复引用同一参考文献5. 将交叉引用的序号改为带有方括号的上标序号格式6. 删除参考文献前的尾注横线 1. 尾注功能 首先使用尾注功能顺序插入参考文献,暂时不考虑方括号问题,具体操作如下: ① 将光标放在需要插入参考文献角标的地方 ② 在word菜单栏,“引用-脚注部分右下角箭头”(用来设置尾注格式) ③如...

Your_Raymond的博客 9万+

《数据分析岗笔试高频题:字节常用的SQL与AB测试考题解析》

• 核心考点:用RANK()/DENSE_RANK()/ROW_NUMBER()排序,SUM() OVER()计算累积值。◦ 用公式n=2*(Zα/2+Zβ)^2*σ²/δ²,取α=0.05,β=0.2,计算得每组需260人;◦ 关注字节技术公众号“字节跳动数据团队”,学习真实AB测试案例(如“推荐算法优化实验”)。• 题型分布:SQL编程题(40%)、AB测试方案设计(30%)、数据洞察题(30%);◦ 牛客网“字节跳动SQL真题”(如“统计用户7日留存”“广告投放ROI计算”)。

2501_91651594的博客 1107

C语言:字符串函数strlen、strcpy、strcat、strcmp、strstr的介绍讲解和底层代码模拟实现

快速了解strlen、strcpy、strcat、strcmp、strstr五个字符串函数和其底层代码逻辑

2202_75305885的博客 1万+

【AUTOSAR-COM】-2.3_通过PduGroup批量控制CAN Frame/Pdu的接收

-->如果实现类似UDS诊断 $28服务,控制所有APP CAN Rx Frame/Pdu/报文接收; -->自定义过滤CAN信号的接收。

「汽车电子助手」的博客 1989

strlen;strcpy ;strcat;strcmp

strlen核心是统计\0前的字符数,必须保证字符串以\0结尾;区分strlen(运行时、有效长度)和sizeof(编译时、内存大小);注意size_t无符号类型的运算陷阱,空指针需提前判断。函数优点缺点适用场景strcpy简单、效率高无长度检查,易缓冲区溢出确定源字符串长度 ≤ 目标缓冲区大小strncpy可控拷贝长度需手动补'\0',可能填充多余'\0'需限制拷贝长度的场景strlcpy自动补'\0'、更安全非标准 C,跨平台性差Linux/BSD 系统,追求安全优先。

2501_93087704的博客 1306

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

strcat strcpy strlen strcmp

strcat 我自己写的是这样: char* _strcat(char *_Dest, const char *_Source) { assert((_Dest != NULL) &amp;&amp; (_Source != NULL)); char* p= _Dest; while(*p!='\0') { p++; } co...

yao5hed的专栏 528

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

c语言字符串函数strcat strcpy strlen strcmp的用法及原型

strcat的用法及原型 strcat(str1,str2) 意为将字符串str2连接到字符串str1之后 strcat用法如下 #include <stdio.h> #include <string.h> int main () { char src[99], dest[99]; strcpy(src, "This is source"); strcpy(dest, "This is destination"); strcat(de.

Li5566123的博客 1万+

字符串函数strlen,strcpy,strcat,strcmp等

在编程的过程中,我们经常要处理字符串,为了⽅便操作字符串,C语⾔标准库中提供了 ⼀系列库函数,此文章主要讲解strlen,strcpy,strcat,strcmp这几个使用频率极高的字符串函数。

m0_66802392的博客 1294

c语言字符串函数(strlen strcpy strcat strcmp等使用及模拟)

strlen strcpy strcat strcmp strncpy strncat strncmp 的使用及模拟

m0_73107796的博客 2298

strlen,strcpy,strcat,strcmp函数

字符串函数strlen,strcpy,strcat,strcmp的使用和实现,strncpy,strncat,strncmp函数的实现

m0_57248752的博客 1216

strlen,strcpy,strcat,strcmp详解

需要注意的是,如果目标字符串destination不具备足够的空间来容纳源字符串source(包括源字符串的结尾空字符’\0’),会导致内存越界错误。具体而言,strcat 函数会将源字符串的内容追加到目标字符串的末尾,并在目标字符串的末尾添加一个字符串结束符 ‘\0’。需要注意的是,目标字符串 dest 必须具有足够的空间来容纳 src 的内容,以及目标字符串自身的内容。是 C 语言中的一个字符串处理函数,用于计算一个字符串的长度,即字符串中的字符个数(不包括结尾的空字符。结尾的字符串的指针。

m0_70865803的博客 700

模拟实现strcmp,strcpy,strlen,strcat,strstr

模拟实现strcmp,strcpy,strlen,strcat,strstr

dragonroar 1249

字符串函数 strlen strcpy strcat strcmp strstr strtok strerror

dest++ = *src++,虽然++的优先级比*的优先级高,但后置++,先使地址解引用,得到dest和src的内容,后*dest = *src,最后才是地址dest++,src++。strtok函数的第一个参数不为NULL,函数将找到str中的第一个标记,strtok函数将保存它在字符串的位置。是 C 语言中的一个字符串追加函数,用于将一个字符串的一部分追加到另一个字符串的末尾。是一个 C 语言中的字符串库函数,用于将一个字符串(源字符串)追加到另一个字符串(目标字符串)的末尾。

bkmoo的博客 2371

用C语言写strcat、strcpy、strlen、strcmp

题目:在不使用<string.h>库函数的基础上,自行编写出能进行字符串复制(函数名: strcpy1()), 连接(函数名: strat1()), 字符串长度判断(函数名: strlen1( )),大小判断(函数名: strcnp1( )) 的函数。 #include <stdio.h> //1字符串拷贝函数strcpy1() char *strcpy1(char *dest,const char *src) { char *p; p = dest;

Mr顺 3324

strcat,strcmp,strcpy,strlen函数的实现

str函数的一万种实现方法之其中一种

weixin_46954629的博客 312

模拟实现库函数strlen strcpy strcmp strcat

模拟实现库函数strlen strcpy strcmp strcat

gemgod的博客 306

c语言模拟实现库函数 strlen strcpy strcat strcmp strstr

解释:strlen 是求字符串长度的,求出的长度是不可能为负数 所以返回类型设置为size_t也是合情合理的 typedef unsigned int size_t\字符串已经 '\0' 作为结束标志,strlen函数返回的是在字符串中 '\0' 前面出现的字符个数(不包含 '\0' )。参数指向的字符串必须要以 '\0' 结束。注意函数的返回值为size_t,是无符号的strlen("abc")-strlen("abcdef") 3- 6 结果仍然是3。

2402_86583623的博客 876
上一篇: 算法导论学习笔记(1)
下一篇: 获取程序路径并去除程序名
devil_pull
博客等级 码龄15年 12粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值