函数原型及介绍

若str1==str2,则返回零;
若str1 > str2,则返回正数;
若str1< str2,则返回负数。

即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇’\0’为止。
如下几种情况:
strcmp(“abcd”,”abcd”)的返回值是 0;
strcmp(“abcd”,”dcba”)的返回值是 -1;
strcmp(“dcba”,”abcd”)的返回值是 1;
其它:
strcmp(“A”,”C”)的返回值是 -2;
strcmp(“C”,”A”)的返回值是 2;

这个确切的数值是依赖不同的c的实现
特别注意: strcmp(const char s1,const char s2) 这里面只能比较字符串,即可用于比较两个字符串常量,或比较数组和字符串常量,不能比较数字等其他形式的参数。


strncmp函数是指定=比较size个字符==。也就是说,如果字符串s1与s2的前size个字符相同,函数返回值为0。此函数功能即比较字符串str1和str2的前maxlen个字符。如果前maxlen字节完全相等,返回值就=0;在前maxlen字节比较过程中,如果出现str1[n]与str2[n]不等,则依次比较str1和str2的前n位,设i(i< n)为两字符串首次的不同位,则返回(str1[i]-str2[i])。
如下几种情况:
str1=”ABCDHG”,str2=”ABCDEF”
strncmp(str1,str2,4)的返回值是 0;
strncmp(str1,str2,5)的返回值是 1;

说明: 比较字符串str1和str2的大小,如果str1小于str2,返回值就==<0==,反之如果str1大于str2,返回值就==>0==,如果str1等于str2,返回值就=0,len指的是str1与str2的比较的字符数。此函数功能即比较字符串str1和str2的前len个字符。
提示: 该函数区分大小写。

编写小练习

strcmp

#define  _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>// strcmpy   => compare
void func1()
{  char buf1[64] = "hello";printf("%s\n",buf1);char buf2[64] = "";fgets(buf2,sizeof(buf2),stdin);buf2[strlen(buf2) - 1] = '\0'; // 下标回车键需要改成‘\0’if (strcmp(buf1, buf2) == 0) {printf("buf1==buf2\n");}else if(strcmp(buf1,buf2) > 0){printf("buf1 > buf2\n");}else {printf("buf1 < buf2\n");}}
int main()
{func1();system("pause");return 0;
}

strcnmp

void func2()
{printf("请输入一个季节 spring summer autumn winter\n");char buf[64] = "";fgets(buf,64,stdin);buf[strlen(buf) - 1] = '\0';if (strncmp(buf, "spring", 6) == 0) {printf("春天\n");}else if (strncmp(buf, "summer", 6) == 0) {printf("夏天\n");}else if (strncmp(buf, "autumn", 6) == 0) {printf("秋天\n");}else if (strncmp(buf, "winter", 6) == 0) {printf("冬天\n");}}
int main()
{func2();system("pause");return 0;
}

strcmp和strncmp封装函数编写

1.strcmp

#include<stdio.h>
#include<assert.h>int my_strcmp(const char* pc1, const char* pc2)
{assert(pc1 != NULL && pc2 != NULL);while (*pc1 == *pc2){if (*pc1 == '\0'){return 0;}pc1++;pc2++;}if (*pc1 > *pc2){return 1;}else if (*pc1 < *pc2){return -1;}
}int main()
{char arr1[10];char arr2[10];printf("请输入第一个字符串:>\n");gets(arr1);printf("请输入第二个字符串:>\n");gets(arr2);int ret = my_strcmp(arr1, arr2);if (ret == -1){printf("第一串 小于 第二串\n");}else if (ret == 1){printf("第一串 大于 第二串\n");}else {printf("两串字符串相等 \n");}
}

2.strncmp

#include<stdio.h>
#include<assert.h>
#include<string.h>
int my_strcnmp(const char *str,const char *str1,int n)
{char *p = (char *)str;char *q = (char *)str1;assert(str);assert(str1);while(n--){if(*p == *q){p++;q++;}else{return (*p - *q);}}return 0;
}
int main()
{char str[]="You are beautiful!";char str1[]="You are great!";printf("%d\n",my_strncmp(str,str1,20));printf("%d\n",strncmp(str,str1,20));//与上面实现的库函数作比较。return 0;
}

编写strcmp 和strncmp相关推荐

  1. 【面试题】C语言:模拟实现memcmp,试比较memcmp与strcmp,strncmp的区别

    模拟实现内存比较函数memcmp: 该函数与strcmp有相似之处,都可用于字符串比较是否相同,若相同,则返回0值.若前者大于后者,则返回大于0的整型值,否则返回小于0的整型值.  区别在于: str ...

  2. C语言——数组、字符串处理函数、strlen、strcpy和strncpy、strcat和strncat、strcmp和strncmp

    目录 一.数组 1.定义:类型 数组名[元素个数] 2.数组不能动态定义 3.如何访问数组中的元素:数组名[下标] 4.循环与数组的关系 5.数组的初始化 二.C99标准中的数组 三.字符串处理函数 ...

  3. 编写strcmp函数

    编写strcmp函数,不使用库函数,相等返回0,不等返回1. #include<stdio.h> #include<stdlib.h> int strcmp(char *sou ...

  4. C语言 : strcmp与strncmp详解

    strcmp与strncmp都是用来比较字符串的,区别在于能否比较指定长度字符串. strcmp 设这两个字符串为str1,str2, 若str1==str2,则返回零: 若str1 > str ...

  5. strcmp与strncmp的区别

    strcmp与strncmp都是用来比较字符串的,区别在于strncmp是比较指定长度字符串,两者都是二进制安全的,且区分大小写. strcmp strcmp(string1,string2) 设这两 ...

  6. C语言中如何编写strcmp(),stract()和strcpy()

    C语言中编写strcmp(),stract()和strcpy() 2008年04月03日 星期四 14:47 char * strcpy(char * dest,const char *src) { ...

  7. strcmp和strncmp函数

    1.strcmp This function starts comparing the first character of each string. If they are equal to each ...

  8. c语言strcmp() 和strncmp()

    一. strcmp() 包含头文件:#include <string.h> 1. 函数原型 int strcmp(const char *str1, const char *str2); ...

  9. 用c语言strncmp函数,strcmp和strncmp函数

    1.strcmp This function starts comparing the first character of each string. If they are equal to each ...

最新文章

  1. 技术详解 | 如何用GAN实现阴影检测和阴影去除?
  2. 不同浏览器前端调试查看返回页面的json数据
  3. Tensorflow yolov3 Intel Realsense D435 多进程multiprocessing线程池pool识别时间测试
  4. docker 查看已安装容器_WIN7下安装Docker容器
  5. 论文共读 | “阳奉阴违”的半监督学习算法 - Virtual Adversarial Training
  6. Go语言实例系列【 获得url实例】
  7. 哈啰出行赴美递交招股书:2020年营收60亿元 顺风车成新增长极
  8. 【剑指Offer】18树的子结构
  9. 飞机大战游戏源html代码,HTML5全民飞机大战游戏代码
  10. PS仿制图章工具、油桶工具、渐变
  11. 记一次带宽跑满服务器卡死事故处理
  12. python数据可视化之美源码_Python数据可视化之美-专业图
  13. MediaPlayer提示“无法播放视频”
  14. 安卓解析xml格式字符串
  15. 常见充值方式介绍及对比
  16. 陪伴难道是最长情的告白吗
  17. 玩转电脑|WIN10如何添加打印机扫描到电脑
  18. ZeroTier-One配置moon心得
  19. 使用包configparser,出现UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 155: illegal mu
  20. 服务器如何上线node.js项目【项目放置在github中】

热门文章

  1. JVM-动态年龄判断你真的理解了吗
  2. 拒绝埋头苦干!PDF办公必备的实用小宝箱
  3. linux查看定义shell的全局变量和局部变量
  4. VGA GPU passthrough qemu虚拟桌面pci穿透
  5. 微信小程序 学生健康校医院电子病历系统
  6. 反制学习:Cobalt Strike批量上线
  7. 蓝汛网络安全等级再上新台阶
  8. 《大话设计模式 上》
  9. 啥是佩琦?我们用Python画给你看!
  10. 最新: 攻克苹果4.3被拒问题