c语言常用字符串处理函数6,【总结】C语言中常见的字符串处理函数

-------------------------------------------------------------------------------------------

C语言中没有字符串类型,但是为了方便对字符串进行操作,提供了许多字符串处理函数。如:

输入输出字符串,字符串的拷贝,连接,比较等操作函数。值得注意的是:在使用输入输出,即gets、

puts函数时应该引入头文件。在使用其他操作函数时,引入头文件。另外,在使用连

接和拷贝字符串函数时,必须保证目标字符数组剩余空间足够放下新字符串和字符串结束标志'\0'。

-------------------------------------------------------------------------------------------

C语言代码如下:/*

**功能:把src中的字符串拷贝到dst中。串结束标志'\0'也一同拷贝。

**src,也可以是一个字符串常量。

*/

char* my_strcpy(char *dst, const char *src)

{

assert(dst);

assert(src);

char *ret = dst;

while (*dst++ = *src++)

{

;

}

return (ret);

}

/*

**功能:把src的字符串连接到dst中字符串的后面,并删去dst后的串标志“\0”。

**本函数返回值是dst的首地址。

*/

char* my_strcat(char *dst, const char *src)

{

assert(dst);

assert(src);

char *ret = dst;

/*

**寻找'\0',即dst的最后一位

*/

while (*dst)

{

dst++;

}

/*执行拷贝*/

while (*dst++ = *src++)

{

;

}

return (ret);

}

/*

**功能:按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果。

**字符串1=字符串2,返回值=0;

**字符串2〉字符串2,返回值〉0;

**字符串1〈字符串2,返回值〈0。

*/

int my_strcmp(const char *dst, const char *src)

{

assert(dst);

assert(src);

while (*dst == *src)

{

if (*dst == '\0')

{

return (0);

}

dst++;

src++;

}

if ((*dst - *src) > 0)

return (1);

else

return (-1);

}

/*

**功能:测字符串的实际长度(不含字符串结束标志‘\0’)并作为函数返回值。

*/

int my_strlen(const char *dst)

{

assert(dst);

int ret = 0;

while (*dst++)

{

ret++;

}

return (ret);

}

/*

**功能:判断src是否是dst的子串,如果是,则返回第一个相等字符的地址,否则返回NULL。

*/

char* my_strstr(char *dst, char *src)

{

assert(dst);

assert(src);

char *pdst = dst;

char *psrc = src;

char *tmp = NULL;

if (*src == '\0')

return (dst);

/*

**如果第一个之后的字符不相等,

**dst跳到第一次相等的下一个字符的位置。

*/

while ((*pdst) && (*psrc))

{

tmp = pdst;

while((*pdst == *psrc) && (*psrc))

{

pdst++;

psrc++;

}

if (*psrc == '\0')

{

return (tmp);

}

else

{

pdst = tmp;

psrc = src;

pdst++;

}

}

return (NULL);

}

--------------------------------------------------------------------------------------------

干货小知识:(void *)可以接收任意类型的指针,但要想在次使用,必须进行强制类型转换。

--------------------------------------------------------------------------------------------

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

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

相关文章

c语言 样例测试覆盖,白盒测试实例之十一——逻辑覆盖测试

逻辑覆盖测试是通过对程序逻辑结构的遍历实现程序的覆盖。从覆盖源代码的不同程度可以分为以下六个标准:语句覆盖、判定覆盖(又称为分支覆盖)、条件覆盖、判定-条件覆盖(又称为分支-条件覆盖)、条件组合覆盖和路径覆盖。先看一下具体例子的源代码(C语言)&#xff1a…

C++运算符重载函数作为类成员函数和友元函数

C运算符重载函数作为类成员函数 1.1成员函数的重载运算符左侧是一个类对象,而且与运算符函数类型相同。因为必须通过类的对象去调用该类的成员函数,而且只有运算符重载函数和返回值类型相同,运算结果才有意义。1.2将双目运算符重载为友元函数…

C语言辅导试题答案,C语言试题含答案).doc

一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其代码填入题干后的括号内。每小题1分,共20分)1.程序中定义以下宏 #define S(a,b) a*b若定义 int area; 且令areaS(31,34),则变量area的值为( )A 10B 12C 21D 28…

C++重载流插入运算符与流提取运算符

C重载流插入运算符与流提取运算符 1.1 "<<" 流插入运算符&#xff0c;">>"流提取运算符。1.2对“<<”和“>>”重载的函数的形式如下&#xff1a;istream & operator >> (istream &,自定义的类&);ostream & …

c语言tcp push函数,如何在FreeBSD中使用TCP_NOPUSH调用sendfile之前添加头文件

我知道技术上FreeBSD中的TCP_NOPUSH和Linux中的TCP_CORK假设是类似的。如何在FreeBSD中使用TCP_NOPUSH调用sendfile之前添加头文件在Linux中&#xff0c;我可以设置TCP_CORK&#xff0c;发送头文件sendfile()&#xff0c;并且取消设置TCP_CORK以在文件前面插入头文件。在FreeBS…

C++不同数据类型的转换

C不同数据类型的转换 C标准类型数据的转换 1.1隐式类型转换&#xff0c;如&#xff1a; int i6; ii7.5; 1.2显式类型转换,如: 类型名(数据) 如int(89.5) 在C语言中 (int)89.5 建议用C的方式。 C用转换构造函数进行类型转换 1.1转换构造函数也是一种构造函数&#xff…

ev3的c语言编程软件,乐高EV3编程软件教育版下载

乐高EV3编程软件教育版官方版是一款用于机器人编程的应用工具&#xff0c;乐高EV3编程软件教育版最新版可以通过可视化图标形式编程&#xff0c;用以控制机器人的各种动作指令&#xff0c;乐高EV3编程软件教育版操作起来比较简单&#xff0c;发挥你的想象&#xff0c;创造无限的…

C++继承与派生

C继承与派生 1.1 C中可重用机制是通过继承这一个机制来实现的。1.2在C中所谓“继承”就是在一个已存在的类的基础上建立一个新的类&#xff0c;已存在的类(例如"马")称为“基类(base class)”或“父类(father class)”&#xff0c;新建立的类(例如“白马”)称为“派生…

Android代码删除通知,Android:从通知中删除通知b

Android&#xff1a;从通知中删除通知b我已经创建了一个应用程序&#xff0c;并且我设法在android通知栏中添加通知。 现在我需要示例如何从事件通知栏中删除该通知&#xff1f;11个解决方案197 votes你可以尝试这个快速代码public static void cancelNotification(Context ctx…

C++三大继承与多级派生

C公用继承 1.1在定义一个派生类时把派生方式指定为public的&#xff0c;称为公用继承&#xff0c;派生类称为公用派生类&#xff0c;基类称为公用派生类。1.2关于公用继承的一段代码:#include <iostream> using namespace std; class student { public: void display(); …

C++派生类的构造函数和析构函数

C派生类的构造函数和析构函数 派生类的构造函数和析构函数 #include <iostream> using namespace std; class student { public: student(int num,char* n):number(num),name(n){} ~student(){cout << "student deconstruted" << endl;} protecte…

android 4.0系统,全新Android 4.0系统_手机Android频道-中关村在线

与搭载Android 2.3系统的OPPO R807不同&#xff0c;OPPO R817搭载了Android 4.0系统。不过这款手机仍旧舍弃了Android系统的原生界面&#xff0c;因此两款手机在界面上的变化其实并不非常大。升级Android 4.0后界面变化不大内置多款主题与解锁样式可更改字体及SIM卡信息OPPO R8…

android sqlite 示例,android SQLite数据库使用示例

数据库的操作&#xff0c;需用到数据库类SQLiteDatabase&#xff0c;重写管理员类SQLiteOpenHelper&#xff0c;用Cursor查询数据一、操作数据库的辅助类&#xff0c;包含打开、关闭、增删改查方法//自定义的数据库的接口&#xff0c;其中包含SQLiteHelperpublic class NotesDb…

C++虚基类

C虚基类 1.1虚基类的作用&#xff1a;如果一个派生类有多个直接基类&#xff0c;而且这些直接基类又有一个共同的基类&#xff0c;则在最终的派生类中会保留该间接共同基类的多份同名成员。所以为了解决这个问题&#xff0c;C提供虚基类的方法&#xff0c;使得在继承间接共同基…

android清除图案锁 位置,安卓手机清除锁屏密码、锁屏图案的教程

来源&#xff1a;安卓网2014-01-21/12:15本文分享一个安卓手机清除锁屏密码以及锁屏图案的几种方法和详细教程。如果锁屏密码、或者图形锁屏密码忘记了怎么办&#xff0c;怎么清除呢?下面小编整理了3种安卓手机清除锁屏图案密码的方法。↓↓↓准备工作&#xff1a;1.确保已经安…

C++多态性

C多态 1.1多态性(polymorphism)是面向对象程序设计的一个重要特征。1.2从系统实现的角度看&#xff0c;多态性分两类&#xff1a;静态多态性与动态多态性。静态多态性是通过函数重载(运算符重载也是函数重载)来实现的。它又称为编译时多态。动态多样性是在程序运行过程中才动态…

ue4 android vulkan,在Android用vulkan完成蓝绿幕扣像

效果图(1080P处理)因为摄像头开启自动曝光&#xff0c;画面变动时&#xff0c;亮度变化导致扣像在转动时如上。这个demo主要测试二点&#xff0c;一是测试ndk camera集成效果,二是本项目对接外部实现的vulkan层是否方便&#xff0c;用于以后移植GPUImage里的实现。我简化了在an…

C++静态关联与动态关联

1.1确认具体对象的过程叫关联(binding)&#xff0c;在这里指把一个函数与类对象捆绑在一起&#xff0c;建立关联。 1.2什么是静态关联&#xff1f; 函数重载和通过对象名调用的虚函数&#xff0c;在编译时即可确定其调用的虚函数属于哪一个类&#xff0c;其过程称为静态关联&…

html5 规定输入字段,HTML5 Input属性详解

本篇教程探讨了HTML5 Input属性详解&#xff0c;希望阅读本篇文章以后大家有所收获&#xff0c;帮助大家HTML5CSS3从入门到精通 。<value 属性value 属性规定输入字段的初始值&#xff1a;readonly 属性readonly 属性规定输入字段为只读(不能修改)&#xff1a;readonly 属性…

html5程序自动登录,Jtro的技术分享:网页调起unity的exe程序并自动登录

思路是这样&#xff1a;通过一个额外的exe文件来实现登录&#xff0c;并保存一个token文件&#xff0c;然后在unity的项目提交数据的时候读取这个token向服务器发送数据。下面是具体的方法&#xff1a;s这个需要用到WPF来编写&#xff0c;首先打开VS2017&#xff0c;选择创建WP…