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

点击蓝字

1aed1f6cbd9e3926a2d8c164e665b561.png

关注我们

因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享

来源于网络,侵删

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(dest, src);printf("最终的目标字符串: %s", dest);return 0;
}

输出结果:This is sourseThis is destination

strcat函数的原型如下

char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数
{char * p = strDest;             //将目的字符串数组赋给p if(strDest==NULL||strScr==NULL)//对原地址和目的地址加非0断言 return strDest; while(*p)             //是while(*p!=’\0’)的简化形式{                       p++;               }                        while(*strsource!=0) {*p=*strScr;p++;             //依次++以进行连接 strScr++;     }*p='\0';                          //有无必要?return strDest;               //为了实现链式操作,将目的地址返回
}

dev c++调试代码如下

#include<stdio.h>
#include<string.h>
char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数
{char * p = strDest;             //将目的字符串数组赋给p if(strDest==NULL||strScr==NULL)//对原地址和目的地址加非0断言 return strDest; while(*p)             //是while(*p!=’\0’)的简化形式{                       p++;               }                        while(*strScr!=0) {*p=*strScr;p++;             //依次++以进行连接 strScr++;     }*p='\0';                          //有无必要?return strDest;               //为了实现链式操作,将目的地址返回
}
int main(){char str1[99]="The";char str2[99]="One";printf("%s\n",strcat(str1,str2));return 0;
}

输出结果为TheOne 如果怀疑strcat函数本身发挥作用的话可以将调用的函数名称改成strcate之类的 结果也一样哦 来 试试看~

strcpy的用法及原型strcpy(str1,str2)是将字符串str2复制到str1中去。

其原型char *strcpy(char *dest, const char *src) 把 src 所指向的字符串复制到 dest。

需要注意的是如果目标数组 dest 不够大,而源字符串的长度又太长,可能会造成缓冲溢出的情况。

关注公众号:C语言中文社区,免费领取300G编程资料

strcpy的用法如下

#include <stdio.h>
#include <string.h>int main ()
{char str1[]="Sample";char str2[99];char str3[99];strcpy (str2,str1);strcpy (str3,"copy successfully");printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);return 0;
}

输出结果为 str1:Sample

str2:   Sample
str3:   copy successfully

strcpy的原型在这里

char *strcpy(char *strDest, const char *strScr)
{char *p=strDest;if(strDest==NULL||strScr==NULL)//对原地址和目的地址加非0断言 return strDest; while(*strScr)                   //是while(*strScr != ’\0’)的简化形式;{*strDest++ = *strScr++;}*strDest = '\0';       //当strScr字符串长度小于原strDest字符串长度,时,如果没有改语句, //  就会出错了return strDest;              
}

dev c++调试过程 strcpy用strcpye代替

#include <stdio.h>
#include <string.h>
char *strcpye(char *strDest, const char *strScr)
{char *p=strDest;if(strDest==NULL||strScr==NULL)//对原地址和目的地址加非0断言 return strDest; while(*strScr)                   //是while(*strScr != ’\0’)的简化形式;{*strDest++ = *strScr++;}*strDest = '\0';       //当strScr字符串长度小于原strDest字符串长度,时,如果没有改语句, //  就会出错了return strDest;              
}int main ()
{char str1[]="Sample";char str2[99];strcpye(str2,str1);printf ("str1: %s\nstr2: %s\n",str1,str2);return 0;
}

strcmp用法及原型 strcmp用于比较字符串。int strcmp(const char *str1, const char *str2) 把 str1 所指向的字符串和 str2 所指向的字符串进行比较。

其中str1和str2可以是字符串常量或者字符串变量,返回值为整形。返回结果如下规定:

  • ① str1小于str2,返回负值;

  • ② str1等于str2,返回0;

  • ③ str1大于str2,返回正值;

strcmp函数实际上是对字符的ASCII码进行比较:首先比较两个字符串的第一个字符,若不相等,则停止比较并得出两个ASCII码大小比较的结果;如果相等就接着向后第二个字符,以此类推。无论两个字符串是什么样,strcmp函数最多比较到其中一个字符串遇到结束符'/0'为止,就能得出结果。

特别注意:strcmp(const char *str1,const char * str2) 这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。

规定返回值为正数,负数,0 。而确切数值是依赖不同的C实现的。

当两个字符串不相等时,C 标准没有规定返回值会是 1 或 -1,只规定了正数和负数。

有些会把两个字符的 ASCII 码之差作为比较结果由函数值返回。

strcmp用法如下:

#include <stdio.h>
#include <string.h>int main ()
{char str1[99];char str2[99];int ret;strcpy(str1, "abcdefF");strcpy(str2, "ABCDEFF");ret = strcmp(str1, str2);if(ret < 0){printf("str1 小于 str2");}else if(ret > 0) {printf("str1 大于 str2");}else {printf("str1 等于 str2");}return 0;
}

运行结果:str1大于str2

strcmp原型如下

int strcmp (const char *str1,const char *str2)
{           int len = 0;while(*str1 && *str2 && (*str1 == *str2)){str1++;str2++;}return *str1-*str2;
}

dev c++调试代码如下 strcmp用strcmpa代替

#include <stdio.h>
int strcmpa (const char *str1,const char *str2)
{           int len = 0;while(*str1 && *str2 && (*str1==*str2)){str1++;str2++;}return *str1-*str2;}int main(void)
{char str1[99] = {"AA"};char str2[99] = {"aa"};printf("%d\n",strcmpa(str1,str2));
}

strlen用法及原型 strlen用于记录字符串长度。

strlen(const char *str) 计算字符串 str 的长度,直到空结束字符,但不包括空结束字符。

strlen用法实例在这里:

#include <stdio.h>
#include <string.h>int main ()
{char str[99];int len;strcpy(str, "You are my destiny");len = strlen(str);printf("%s的长度是 %d\n", str, len);return 0;
}
strlen原型如下int strlen(char *str)
{int len = 0;while(*str++){len++;}return len;
}
dev c++调试过程如下 函数名用strlenn代替#include <stdio.h>
int strlenn(char *str)
{int len = 0;while(*str++){len++;}return len;
}
int main(void)
{char str[99] = {"You are my destiny"};printf("%d\n",strlenn(str));
}
如果你年满18周岁以上,又觉得学【C语言】太难?想尝试其他编程语言,那么我推荐你学Python,现有价值499元Python零基础课程限时免费领取,限10个名额!
▲扫描二维码-免费领取

戳“阅读原文”我们一起进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

crntos7启动php命令_CentOS7设置php-fpm开机自启动

php-fpm安装成功后并不会开机启动&#xff0c;如果是运行正常的程序在系统重启后出现502报错(502 Bad Gateway)&#xff0c;通常就是php-fpm没启动起来。0 先确定几个文件的位置&#xff0c;记录下来备用a php-fpmwhich php-fpm/usr/sbin/php-fpmb conf#几个可能的位置#/etc/ph…

java jpa 异步编程_异步处理时的JPA

java jpa 异步编程几年前&#xff0c;在Java世界中&#xff0c;几乎显而易见的是&#xff0c;每个“企业”类项目都需要JPA与数据库进行通信。 JPA是Joel Spolsky描述的“ 泄漏抽象 ”的完美示例。 刚开始时很棒而又容易&#xff0c;但是最后很难调整和限制。 对于许多参与数据…

C语言字符数组与字符串的使用详解

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删正文1、字符数组的定义与初始化字符数组的初始化&#xff0c;最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]{ I, ,a,m, ,‘h,a,p…

SRC挖洞网集合

阿里SRC https://security.alibaba.com/ 蚂蚁集团SRC https://security.alipay.com/ 阿里本地生活SRC https://asrc.alibaba.com/#/ 京东安全应急响应中心 https://security.jd.com/#/ 腾讯SRC https://security.tencent.com/ 美团安全应急响应中心 https://security.meit…

不能将紧实的字段 绑定到_代码整洁之道【笔记】

一、整洁代码A.混乱的代价1.有些团队在项目初期进展迅速&#xff0c;但有那么一两年的时间却慢去蜗行。对代码的每次修改都影响到其他两三处代码2.花时间保持代码整洁不但有关效率&#xff0c;还有关生存3.程序员遵从不了解混乱风险经理的意愿&#xff0c;也是不专业的做法4.Bj…

存根类 测试代码 java_测试双打:模拟,假人和存根

存根类 测试代码 java大多数班级都有合作者。 在进行单元测试时&#xff0c;您通常希望避免使用那些协作者的实际实现方式来避免测试的脆弱性和绑定/耦合&#xff0c;而应使用测试双打&#xff1a;模拟&#xff0c;存根和双打。 本文引用了有关该主题的两篇现有文章&#xff1…

5 个牛逼的算法设计,你知道几个?

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删1、分治法概念&#xff1a;将一个难以直接解决的大问题&#xff0c;分割成一些规模较小的相同问题&#xff0c;以便各个击破&#xff0c;分而治之…

python2.7.10安装教程_Linux系统(CentOS)下python2.7.10安装

本文记录了Linux系统(CentOS)安装Python&#xff0c;供大家参考&#xff0c;具体内容如下Python(Linux) 下载地址操作系统&#xff1a;Centos6.41、下载下载的版本&#xff1a;Python-2.7.10.tgz2、安装一般情况下&#xff0c;Linux都会预装 Python了&#xff0c;但版本较低。(…

javafx窗体程序_JavaFX实际应用程序:AISO HRC-Matic

javafx窗体程序“ Real-World JavaFX Apps”系列中的第三个应用程序是一种重型数据输入应用程序&#xff0c;由称为HRC-Matic的关系数据库支持。 它由AISO在日内瓦开发。 AISO是一家专门开发基于JavaFX的业务应用程序的公司。 他们还在研究我在本系列的第一个博客&#xff08; …

x201换风扇_笔记本怎么换风扇 ThinkPad X201i换风扇图文教程

ThinkPad X201i换电扇图文教程&#xff1a;拆机之前&#xff0c;我们需求先对X201i的散热电扇在停止了开端的理解&#xff0c;得知价钱从10元左右的单电扇&#xff0c;到上百的散热全体都有&#xff0c;而且还分东芝产和松下产等不同产地的&#xff0c;小编选择了松下产的整套散…

几十个Shell分析日志文件脚本!

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删收集&#xff0c;整理一些服务器日志分析命令&#xff0c;可以用来分析自己网站服务器日志&#xff0c; 看看网站的访问量。看看有没有黑阔搞破坏…

flex布局水平垂直 垂直_垂直和水平装饰

flex布局水平垂直 垂直装饰器模式是在不更改其接口的情况下向对象添加功能的最佳方法之一。 我经常使用可组合装饰器&#xff0c;并且总是会问自己在功能列表必须可配置时如何正确设计它们。 我不确定我的答案是否正确&#xff0c;但是这里有一些值得深思的地方。 The Apartme…

一文读懂 | Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删栈是什么&#xff1f;栈有什么作用&#xff1f;首先&#xff0c;栈 (stack) 是一种串列形式的数据结构。这种数据结构的特点是后入先出 (LIFO, L…

thinkphp6企业项目实战_[MarsZ]ThinkPHP项目实战总结

本文原word格式百度云盘下载地址&#xff1a;综述 2需求 2作者 2系统一览 2Unity3d客户端 2PHP后台 4准备 6XAMPP 6官网 6下载地址 6教程 6ThinkPHP 6官网 7项目所用版本 7下载地址 7快速入门 7完全手册 7步骤 7准备ThinkPHP 7修改MySQL设置信息 8检测是否成功 9扩展&#xff1…

java包装模式_在Java8中包装设计模式

java包装模式GOF书中没有列出环绕模式&#xff0c;但对于以下问题非常有用&#xff1a; 循环构造&#xff0c;例如执行while / while / for循环 秒表周围的一些代码。 用运行时异常包装检查的异常 初始化和清理&#xff0c;例如创建/销毁线程池或打开/关闭文件等 将上下文…

c得到当前时分秒 linux_Linuxc - Linux系统下的时间知识点

Unix/Linux系统下的时间知识点一、Unix/Linux系统的几种时间结构&#xff1a;1、time_t 类型&#xff1a;长整型&#xff0c;一般用来表示从1970-01-01 00:00:00时以来的秒数&#xff0c;精确度&#xff1a;秒&#xff1b;由函数time()获取&#xff1b;该类型定义在头文件 /usr…

【C语言】彻底搞懂内存屏障与volatile

点击蓝字关注我们因公众号更改推送规则&#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络&#xff0c;侵删最有价值的写在最前面内存屏障与 volatile 是高并发编程中比较常用的两个技术&#xff0c;无锁队列的时候就会用到这两项技术。然而这两项技术涉…

javafx 使用_何时使用JavaFX代替HTML

javafx 使用像我这样的JavaFX爱好者反复面对的一个问题是何时&#xff08;或为什么&#xff09;使用JavaFX代替HTML&#xff08;5&#xff09;。 这是我的两分钱&#xff1a; 如果…&#xff0c;则应使用JavaFX。 …您对坚固性/质量感兴趣。 JavaFX是Java&#xff01; 您将能…

charles代理手机调试_H5开发 移动端 调试之 Charles 抓包 和 Map Remote

移动端调试是每一位前端工程师必须掌握的技能&#xff0c;在移动端环境上往往有很多不同的情况&#xff0c;我们需要借助一些工具来调试。本文将介绍 Mac 如何安装 charles&#xff0c;进行抓包、以及一些应用场景。场景一&#xff1a;app端内线上环境接口报错&#xff0c;想看…

lucene 查询示例_Lucene查询(搜索)语法示例

lucene 查询示例本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中&#xff0c;您将了解Lucene。 您将了解为什么这样的库很重要&#xff0c;然后了解Lucene中搜索的工作方式。 此外&#xff0c;您将学习如何将Lucene Search集成到您自己的应用程序中…