c语言字符串未初始化strcat,C语言中字符串常用函数strcat与strcpy的用法介绍

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

头文件:#include

功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间

说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针。

函数实现:

复制代码 代码如下:

/**********************

* C语言标准库函数strcpy的一种典型的工业级的最简实现

* 返回值:目标串的地址。

* 对于出现异常的情况ANSI-C99标准并未定义,故由实现者决定返回值,通常为NULL。

* 参数:

* strDestination 目标串

* strSource 源串

***********************/

char *strcpy(char *strDestination,const char *strSource)

{

assert(strDestination!=NULL && strSource!=NULL);

char *strD=strDestination;

while ((*strD++=*strSource++)!='\0');

return strDestination;

}

/*

GNU-C中的实现(节选):

*/

char* strcpy(char *d, const char *s)

{

char *r=d;

while((*d++=*s++));

return r;

}

/* while((*d++=*s++)); 的解释:两层括号是为了取赋值表达式的值,

而赋值表达式的值为左操作数,所以在复制NULL后,循环停止 */

strcat原型extern char *strcat(char *dest,char *src);

用法#include

在C++中,则存在于头文件中。

功能把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。

说明src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

返回指向dest的指针。

函数实现:

复制代码 代码如下:

//将源字符串加const,表明其为输入参数

char *strcat(char *strDest, const char *strSrc)

{

// 后文return address,故不能放在assert断言之后声明address

char *address = strDest;

assert((strDest != NULL) && (strSrc != NULL)); //对源地址和目的地址加非0断言

while(*strDest)             //是while(*strDest!='\0')的简化形式

{

//若使用while(*strDest++),则会出错,因为循环结束后strDest还会执行一次++,

//那么strDest将指向'\0'的下一个位置。/所以要在循环体内++;因为要是*strDest最后指

//向该字符串的结束标志'\0'。

strDest++;

}

while(*strDest++ = *strSrc++)

{

NULL;             //该循环条件内可以用++,

}                   //此处可以加语句*strDest='\0';无必要

return address;     //为了实现链式操作,将目的地址返回

}

时间: 2013-07-09

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

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

相关文章

charles抓包工具使用指南

前言移动APP抓包PC端抓包查看模式其他功能问题汇总1、 前言: Charles是一款抓包修改工具,相比起burp,charles具有界面简单直观,易于上手,数据请求控制容易,修改简单,抓取数据的开始暂停方便等等…

android电视打印信息解析,关于液晶电视打印信息

原来是波特率的原因。。换了个波特率显示正常了,下面这个是红灯亮不开机的酷开k2打印信息,有老师能解释一下怎么看吗JHello world!{m3a} svn-r(Apr 2 2015 19:53:30)init_hwsetting_cpre_hwsetting_cpost_hwsetting_cparse hw setting DONE!internal ro…

bzoj1269 文本编辑器 splay

直接搞棵splay就行了,不要把光标弄到树中而是把光标当成询问或操作区间的端点标志这样会简单很多。 7点40分写到9点20分,包括调试总共花了一个小时40分钟,这次是自己独立调出来的,总算对splay有一定的了解。 设计操作:…

sap bom递归_SAP软件之化工行业特点01

作者:阿long声明:本文章仅用于SAP软件的应用、学习沟通,不代表SAP公司;文中所示截图来源SAP软件,相应著作权归SAP所有。SPA中关于制造的几种介绍2020.06.29简单的说,制造业中,生产管理是企业的组…

android 对话框 图片,android – AlertDialog按钮的图像

由于不推荐使用onPrepareDialog,因此您可以使用onShowListener.你也应该设置Drawable边界,或者它将被放置在最左边.下面的代码输出public class MyDialog extends DialogFragment {Overridepublic Dialog onCreateDialog(Bundle savedInstanceState) {final AlertDialog dialog…

并发事务正确性的准则 可串行化_从0到1理解数据库事务(上):并发问题与隔离级别...

最近准备写一篇关于Spanner事务的分享,所以先分享一些基础知识,涉及ACID、隔离级别、MVCC、锁,由于太长,只好拆分成上下两篇:上:并发问题与隔离级别主要讲事务所要解决的问题、思路,先理解为什么…

Windows 8.1 Windows Phone 开发环境安装遇到的问题

以前使用 Windows 8 开装 WP 8 的开发环境,很是顺利。 将系统升级到 Windows 8.1 后,先是安装了 Windows 8.1 旗舰本,安装后发现没有 Hyper-V 功能。 换成企业版,确定有 Hyper-V 功能后,安装 VS2010 WP8 SDK 后&#x…

android eclipse services,Eclipse中调试Android Framework本地代码模块部分过程记录

环境:Amlogic S905M2 ubunt12.04 win7 adt_bundle_linux Android SDK过程:1.为避免用Eclipse基础版本(Luna)后需要安装包括adt、cdt等插件麻烦,直接解压adt_bundle_linux安装IDE环境2.调试准备:目标设备(Amlogic S905M2)中需要…

python数独代码_python 实现计算数独

输入文件格式:008309100900060004007504800036000540001000600042000970005907300600010008004608200输出结果:yuan********************0 0 8 3 0 9 1 0 09 0 0 0 6 0 0 0 40 0 7 5 0 4 8 0 00 3 6 0 0 0 5 4 00 0 1 0 0 0 6 0 00 4 2 0 0 0 9 7 00 0 5…

MyEclipse配色字体等配置的解决方案

Myeclipse黑色配色方案(精心修改版) http://download.csdn.net/detail/rehongchen/6579945 如何改变Myeclipse编辑区背景色 http://my.oschina.net/epiclight/blog/465506 -------------------------------------------------------------------------…

android studio内置终端,Android Studio Terminal xx不是内部或者外部命令

背景在使用AS工具自带命令面板Terminal的时候,相信你有碰到过:xx不是内部或者外部命令,也不是可运行程序。解决办法就是配置环境变量一、在 Terminal 中使用 adb,报 adb 不是内部或者外部命令,也不是可运行的程序。解决…

python pp模块_python常用模块

1、re模块re模块用于对python的正则表达式的操作1.1 什么是正则正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在Python中)它内嵌在Python中,并通过 re 模块实现。正…

[Leetcode]@python 90. Subsets II.py

题目链接 https://leetcode.com/problems/subsets-ii/ 题目原文 Given a collection of integers that might contain duplicates, nums, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain dupli…

android glu,我可以使用glu与Android NDK

Does OpenGL ES not have glu?OpenGL ES 1.1:#include #include OpenGL ES 2.0:#include #include Is there a port I can use?是的,Android的部分端口为GLU – GLU ES(支持gluErrorString,gluPerspective和许多其他功能)&#…

线程间通信 GET POST

线程间通信有三种方法:NSThread GCD NSOperation 进程:操作系统里面每一个app就是一个进程、 一个进程里面可以包含多个线程,并且我们每一个app里面有且仅有一条主线程。scrollViewDelegate 的方法 : (UIView *&…

android 恢复app 到前台,android手机把app disable了,怎么恢复

程序源代码如下:main(){int i,j,k;printf("\n");for(i1;i<5;i)    &#xff0f;*以下为三重循环*/for(j1;j<5;j)for (k1;k<5;k){if (i!k&&i!j&&j!k)    /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}main(){…

python mount回调函数_为python回调函数设置argtype

我对Python很在行&#xff0c;所以希望我能正确地表达这个问题。在整个问题涉及从Python调用C例程。我可以通过把一些相关的问题/答案凑在一起来接近&#xff0c;但我似乎不能把事情安排得很好。有两个方面&#xff1a;第一个是用指针调用C例程&#xff0c;第二个是使用回调函数…

参考 备份

原链接http://help.jd.com/Vender/question-1004.html 京东开放平台招商基础资质标准 一、基础资质标准&#xff1a; 注&#xff1a;商家可以选择京东质检平台中的第三方机构检测服务&#xff0c;申请地址&#xff1a;http://fw.jd.com/ser/list.action?page1&cid400 店铺…

android透明像素效率,android-非透明像素上的ImageView ColorFilter.夹

我有一个带位图的ImageView.该位图具有Alpha通道和透明像素.当我尝试将ColorFiter与Mode.OVERLAY(由于蜂窝)一起使用时-提供的颜色覆盖了整个imageview(整个矩形),但是我只想覆盖非透明像素.我如何裁剪imageview的画布以在需要的地方执行过滤器&#xff1f;更新我在png中有灰色…

svm预测结果为同一个值_SVM算法总结

一、1.感知机模型&#xff1a;感知器模型是SVM、神经网络、深度学习等算法的基础;感知器模型就是试图找到一条直线&#xff0c;能够把所有的“1”类和“-1”类分隔开&#xff0c;如果是高维空间中&#xff0c;感知器模型寻找的就是一个超平面&#xff0c;能够把所有的二元类别分…