当前位置: 首页 > 编程日记 > 正文

转:strcat与strcpy与strcmp与strlen

转自:http://blog.chinaunix.net/uid-24194439-id-90782.html

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

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。

转载于:https://www.cnblogs.com/kira2will/p/4015386.html

相关文章:

2021 EdgeX中国挑战赛盛大开幕,英特尔赋能开发者,助力创新方案落地

2021年7月12日&#xff0c;北京中关村论坛隆重举行。论坛上&#xff0c;英特尔研究院副总裁、英特尔中国研究院院长宋继强博士&#xff0c;北京市科委、中关村管委会高科技产业促进中心主任徐剑发表致辞并联合Linux基金会、VMware威睿等单位代表共同宣布2021 EdgeX中国挑战赛开…

构建安全的 ASP.NET 应用程序

最近开发的系统因为用到Asp.net的安全性方面的东西&#xff0c;所以拼命看MSDN&#xff0c;E文看着有点慢&#xff0c;还好现在在MSDN 中文网站中很多文章都有了翻译&#xff0c;所以今天索性在MSDN中文网站上找了一把&#xff0c;还真有。有感兴趣的朋友可以看看&#xff0c;不…

.NET2.0隐形的翅膀,正则表达式搜魂者【月儿原创】

.NET2.0隐形的翅膀&#xff0c;正则表达式搜魂者 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.14 本文实现了&#xff1a;只能输入1个数字只能输入n个数字只能输入至少n个数字只能输入m到n个数字只能输入数…

连华为都在研究的计算机视觉,到底有多牛?

去年&#xff0c;华为在CCF-GAIR 大会上介绍了在人工智能领域的愿景&#xff0c;华为为了实现这个战略目标&#xff0c;从中梳理出深耕基础研究、打造全栈方案、投资开放生态和人才培养、解决方案增强、内部效率提升五大方向&#xff0c;以此打造无所不及的AI&#xff0c;构建万…

JS 点击弹出图片/ 仿QQ商城点击左右滚动幻灯片/ 相册模块,点击弹出图片,并左右滚动幻灯片...

1&#xff0c; 点击弹出图片 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml"><head><meta ht…

Nginx+Tomcat实现反向代理与动静分离

1. 什么是动静分离 所谓动静分离就是通过nginx&#xff08;或apache等&#xff09;来处理用户端请求的静态页面&#xff0c;tomcat&#xff08;或weblogic&#xff09;处理动态页面&#xff0c;从而达到动静页面访问时通过不同的容器来处理。 2. 为什么做动静分离 Nginx处理静态…

白话经典算法系列之七 堆与堆排序

堆排序与高速排序&#xff0c;归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前&#xff0c;先解说下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是全然二叉树或者是近似全然二叉树。二叉堆满足二个特性&#xff1a;1&#xff0e;父结点的键值总是大…

.NET2.0抓取网页全部链接【月儿原创】

.NET2.0抓取网页全部链接 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.18 该方法经过对各大门户网站测试结果是抓取率100%&#xff01; 效果图 后台代码&#xff1a; using System;using System.Data;…

腾讯会议又一黑科技,屏蔽超过 200 种会议噪声是如何做到的?

作者 | 伍杏玲出品 | AI 科技大本营&#xff08;ID:rgznai100&#xff09;远程会议已成为我们常规的工作沟通方式&#xff0c;在线交流打破时间、空间的限制&#xff0c;给予我们便利之际&#xff0c;也屡遭尴尬&#xff1a;忘记静音&#xff0c;一边听会一边敲键盘&#xff0c…

zabbix之日志文件监控

一、日志item介绍 下面介绍zabbix另一个“重量级”的功能——日志文件监控&#xff0c;它最主要的是监控日志文件中有没有某个字符串的表达式&#xff0c;对应日志轮转与否&#xff0c;zabbix都支持。 在配置Item的时候&#xff0c;Type选择Zabbix agent (active)&#xff…

深度学习三巨头共同发文,聊聊深度学习的过去、现在与未来

作者|Yoshua Bengio,Yann LeCun,Geoffrey Hinton译者|香槟超新星出品|AI科技大本营(ID:rgznai100)人工神经网络领域的研究是基于对人类智能的观察而来&#xff1a;人类智能从高度并行的网络中产生&#xff0c;这些网络由结构相对简单的非线性神经元组成&#xff0c;通过调整连接…

ASP.NET2.0图片格式转换【月儿原创】

ASP.NET2.0图片格式转换 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.20 说明&#xff1a;本文实现了图片格式随意转换&#xff08;下拉框选择&#xff09;&#xff1b;点击FileUpload立即显示图片&#xf…

org.apache.hadoop.fs-ChecksumException

当ChecksumFileSystem出现问题时抛出 1 package org.apache.hadoop.fs;2 3 import java.io.IOException;4 5 /** Thrown for checksum errors. */6 public class ChecksumException extends IOException {7 private long pos;8 public ChecksumException(String descriptio…

Linux下显示硬盘空间的两个命令

1.df -h &#xff0c;用于显示目前所有文件系统的可用空间及使用情况&#xff0c;示例如下&#xff1a; [rootmsg45 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_msg45-lv_root 50G 15G 33G 31% / tmpfs …

C#对Microsoft.VisualBasic My对象兰台妙选【月儿原创】

C#对Microsoft.VisualBasic My对象兰台妙选 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.24 1.添加引用 2.引用Microsoft.VisualBasic 命名空间 3.所有的My对象应用皆出自以下类库&#xff0c;本文仅抛砖…

AIoT的发展路上,英特尔如何通过边缘计算掀起产业变革

你知道吗&#xff1f;到明年&#xff0c;仅我国的物联网连接规模将达到70亿&#xff0c;而全世界的人口也不过刚刚达到这个数字。物联网的爆发意味着什么&#xff1f;相信每个人都有着不同的答案&#xff0c;对于我国的14亿人口而言&#xff0c;即将全面到来的物联网红利不仅能…

Xbox One 游戏欣赏: Xbox Fitness 太极拳游戏

早就听说Xbox One中带有太极拳&#xff0c;这是我一直想练的&#xff0c;终于找到“死人定制”的师傅了。因为看书很难练&#xff0c;找不到联系场所&#xff0c;要么就要花价格不菲的学费。Xbox 360中的型可塑2012游戏中&#xff0c;包含了一个游戏章节就是Taiji&#xff0c;但…

Android美工坊:Selector选择器的使用

Android selector选择器可以让你切换自定义的背景风格&#xff0c;比如button、ListView、或者布局点击时候的背景切换等&#xff0c;都需要用到它 背景可以是自定义到颜色&#xff0c;或者图片资源 首先需要在你的res目录下创建drawable文件夹&#xff0c;然后在里面创建一个s…

C#中判断空字符串的3种方法性能分析【月儿原创】

C#中判断空字符串的3种方法性能分析 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.4.28 3种方法分别是&#xff1a;string a"";1.if(a"")2.if(aString.Empty)3.if(a.Length0) 3种方法都是…

微软职位内部推荐-SDEII

微软近期Open的职位:Title: Software Development Engineer 2Group: Bing Client, Search Technology Center Asia, BingWork Location: Beijing/Suzhou, China Group OverviewSearch Technology Center Asia (STCA)STCA was founded in year 2005 and is now starting the sec…

WAIC剪影:AI的未来,关乎星辰大海

“天文学&#xff0c;是像数学一样的基础学科&#xff0c;而越是基础学科&#xff0c;就越难直接应用。”“我们没有想过盈利&#xff0c;这些技术目前来看也不太可能直接应用到其他领域。”“不管是优图还是腾讯公司层面&#xff0c;不是做的每件事情都要考虑它的经济价值或者…

用Swift实现一款天气预报APP(三)

这个系列的目录&#xff1a; 用Swift实现一款天气预报APP&#xff08;一&#xff09; 用Swift实现一款天气预报APP&#xff08;二&#xff09; 用Swift实现一款天气预报APP&#xff08;三&#xff09; 通过前面的学习&#xff0c;一个天气预报的APP已经基本可用了。至少可以查看…

asp.net2.0学习历程 菜鸟到中级程序员的飞跃【月儿原创】

asp.net2.0学习历程 菜鸟到中级程序员的飞跃 --30本好书点评 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.5.16 学历历程 如果你是一个菜鸟或者自认为初学者那么本文非常适合你&#xff1b; 不能说这30本书…

了解黑客的关键工具---揭开Shellcode的神秘面纱

2019独角兽企业重金招聘Python工程师标准>>> ref: http://zhaisj.blog.51cto.com/219066/61428/ 了解黑客的关键工具---揭开Shellcode的神秘面纱 对于初期接触网络安全的人来说&#xff0c;Shellcode是很神秘的东西&#xff0c;对于网络攻击过程中的嗅探信息、漏洞…

2021年移动云API应用创新开发大赛火热开启!

每一位开发者&#xff0c;都是这个时代宝贵的财富2021年移动云API应用创新开发大赛以“创新云转型&#xff0c;智慧云服务”为主题旨在激发开发者创新动力丰富云计算应用场景与移动云携手探索数智未来给社会带来更多智慧创新体验大赛官方报名通道已开启您可通过下方二维码报名参…

Android 多媒体综述

Android 多媒体综述 多媒体系统是Android中最为庞大的系统&#xff0c;涉及了硬件抽象层、编解码、OpenCore多媒体框架、Android多媒体框架、Java层接口多方面的内容。一、引言本系列内容都是在Android应用层面的&#xff0c;将会分为Camera、Audio、Video三部分进行讲述。另外…

asp.net2.0导出pdf文件完美解决方案【月儿原创】

asp.net2.0导出pdf文件完美解决方案 作者&#xff1a;清清月儿 主页&#xff1a;http://blog.csdn.net/21aspnet/ 时间&#xff1a;2007.5.28 PDF简介&#xff1a;PDF&#xff08;Portable Document Format&#xff09;文件格式是Adobe公司开发的电子文件格式。这…

MYSQL 部分事务

MYSQL 中通过 savepoint 的方式来实现只提交事务的一部分。 step 1 : savepoint savepoint_name;、 做标记 step 2 :rollbak to savepoint savepoint_name;回滚到标记点 setp 3 :release savepoint savepoint_name;解除标记 -------------------------------------------------…

二维已经 OUT 了?3DPose 实现三维人体姿态识别真香 | 代码干货

作者|李秋键出品|AI科技大本营(ID:rgznai100)引言人体姿态估计是计算机视觉领域很多研究工作的基础&#xff0c;也是研究的热点问题&#xff0c;在行为识别、人机交互、姿态跟踪等领域有着广泛的应用前景。按照人体姿态维度的差异&#xff0c;可以将人体姿态估计任务分为二维人…

python学习------tab补全

python学习------tab补全 python也可以进行tab键补全 123456789101112131415161718#!/usr/bin/env python# -*- coding: utf-8 -*-# python startup fileimport sys import readline import rlcompleter import atexit import os # tab completionreadline.parse_and_bind(tab:…