C语言 - strcmp和strncmp的编程实现及总结
一、strcmp和strncmp的编程实现及总结
说明:
返回值:当s1<s2时,返回值<0
返回值:当s1=s2时,返回值=0
返回值:当s1>s2时,返回值>0
int mystrcmp(const char *dest,const char *src)
{
int i=;
//判断str1与str2指针是否为NULL,函数assert的头文件为#include<assert.h>
assert(dest!=NULL && src !=NULL); //[] //如果dest > source,则返回值大于0,如果dest = source,则返回值等于0,如果dest < source ,则返回值小于0。
while (*dest && *src && (*dest == *src))
{
dest ++;
src ++;
}
return *dest - *source; []
}
注意:
代码[1]:很多人会忘记对字符串指针的检查,这一部分能体现程序员的严谨性,主要体现在一下三点,
a、不检查指针的有效性,说明答题者不注重代码的健壮性
b、检查指针的有效性时使用((!strDest)||(!strSrc))或(!(strDest&&strSrc)),说明答题者对C语言中类型的隐式转换没有深刻认识
c、检查指针的有效性时使用((strDest==0)||(strSrc==0)),说明答题者不知道使用常量的好处
代码1类似于下述代码: if ((strDest == NULL)||(strSrc == NULL)) return -1;
assert并不是抛出异常,而是判断是否出错
代码[2]:为了优化代码,此代码中返回正数代表1,返回负数代表-1
用法:#include <string.h>
功能:比较字符串s1和s2的前n个字符。
说明:
返回值:当s1<s2时,返回值<0
返回值:当s1=s2时,返回值=0
返回值:当s1>s2时,返回值>0
int strncmp(const char *s1, const char *s2, size_t len)
{
//判断str1与str2指针是否为NULL
assert(s1!=NULL && s2 !=NULL); while(len--)
{
if(*s1 == || *s1 != *s2)
return *s1 - *s2; s1++;
s2++;
}
return ;
}
注意:注意事项同上,不过需要在上面的基础上添加一步 长度N的判断
C语言 - strcmp和strncmp的编程实现及总结的更多相关文章
- C语言与VT100控制码编程
C语言与VT100控制码编程 声明: . 如果您打算阅读本文,希望您已经了解过C语言的基本语法,本文不对C语言的基本语法进行说明,因为那些东西几乎唾手可得; . 本文在vim中编辑,请尽量是用vim进 ...
- 一个脚本和一个容易疏忽的问题strcmp、strncmp、memcmp的用法【原创】
一个容易疏忽的问题: strcmp.strncmp.memcmp, 对于memcmp进行字符串比较时可能会出现内存重叠的情况 status = strncmp(xdev->product, &q ...
- R语言基于S4的面向对象编程
前言 本文接上一篇文章 R语言基于S3的面向对象编程,本文继续介绍R语言基于S4的面向对象编程. S4对象系统具有明显的结构化特征,更适合面向对象的程序设计.Bioconductor社区,以S4对象系 ...
- Go语言面组合式向对象编程基础总结
转自:http://blog.csdn.net/yue7603835/article/details/44282823 Go语言的面向对象编程简单而干净,通过非侵入式接口模型,否定了C/C++ Jav ...
- 字符串函数---strcmp()与strncmp()具体解释及实现
一.strcmp()与strncmp() strcmp():strcmp(s1,s2); 比較两个字符串. strncmp():strncmp(s1,s2); ...
- strcmp与strncmp的区别
================== strcmp与strncmp都是用来比较字符串的,区别在于能否比较指定长度字符串. strcmp C/C++函数,比较两个字符串 设这两个字符串为str1,s ...
- C语言控制台窗体图形界面编程(总结)
本系列文章是笔者通过学习<C语言控制台窗体界面编程(修正版)>而写(关于此文档的很多其它信息请看本系列文章第一篇),旨在让大家更加清晰简洁easy地学习C语言控制台窗体界面的编程. 通过本 ...
- 字符串函数---strcmp()与strncmp()详解及实现【转】
本文转载自:http://blog.csdn.net/lanzhihui_10086/article/details/39829623 一.strcmp()与strncmp() strcmp():st ...
- Python语言基础07-面向对象编程基础
本文收录在Python从入门到精通系列文章系列 1. 了解面对对象编程 活在当下的程序员应该都听过"面向对象编程"一词,也经常有人问能不能用一句话解释下什么是"面向对象编 ...
随机推荐
- linux 下各errno的意义(转)
linux 下各errno的意义(转) 本文转自:http://blog.csdn.net/kofiory/article/details/5790409 strerror(errno):获取er ...
- mysql中的安全模式(sql_safe_updates)
什么是安全模式 在mysql中,如果在update和delete没有加上where条件,数据将会全部修改.不只是初识mysql的开发者会遇到这个问题,工作有一定经验的工程师难免也会忘记写入where条 ...
- Java基础开篇
我是一个2019毕业的非计算机的毕业生,从大二开始喜欢上Java直到现在一直都在学习,Brid从小就对计算机感兴趣,可惜高中的时候不懂事,没有规划未来,考上了一所专科学院,然后大一并不能转专业,现在毕 ...
- HDU 4292 Food (建图思维 + 最大流)
(点击此处查看原题) 题目分析 题意:某个餐馆出售f种食物,d种饮料,其中,第i种食物有fi份,第i种饮料有di份:此时有n个人来餐馆吃饭,这n个人必须有一份食物和一份饮料才会留下来吃饭,否则,他将离 ...
- H.Holy Grail ( floyd )(The Preliminary Contest for ICPC Asia Nanjing 2019)
题意: 给出一个有向图,再给出6条原来不存在的路径,让你在这6条路径上添加一个最小的数,使图不存在负环. 思路: 直接6遍 floyd 输出就行了. #include <bits/stdc++. ...
- python 操作mongodb 文件相关
https://api.mongodb.com/python/current/tutorial.html# 文档地址 from pymongo import MongoClientfrom gridf ...
- Codeforces 1178C. Tiles
传送门 考虑一块块填,首先 $(1,1)$ 有 $4$ 种方案 然后根据 $(1,1)$ 的右边颜色,$(1,2)$ 有两种方案,$(1,3)$ 根据 $(1,2)$ 也有两种方案... 考虑 $(2 ...
- ueditor 后端配置项没有正常加载,上传插件不能正常使用 UTF8 PHP
修改config.json 文件,用DW软件打开,修改好后,保存 若用记事本打开的话修改后保存,无法加载
- 2019.10.9wechat反弹shell复现
./backdoor.py -f libEGL.dll -s reverse_shell_tcp_inline -P 6666 -H 192.168.106.137 msfconsle 打开msf 在 ...
- HAproxy企业应用,TCP/HTTP动静分离
HAProxy的是一个免费的.开源的的tcp/http反向代理工具.负载均衡器,是一个企业非常快速和可靠的安全的解决方案,提供高可用性.高并发性,负载均衡和代理对TCP和基于HTTP的应用程序.它特别 ...