c++编程中怎样用strncmp函数计算两个字符串的数目,并比较大小。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++编程中怎样用strncmp函数计算两个字符串的数目,并比较大小。相关的知识,希望对你有一定的参考价值。

strncmp函数是指定比较n 个字符。也就是说,如果字符串s1与s2的前n 个字符相同,函数返回值为0。

函数原型:int strncmp ( const char * str1, const char * str2, size_t num );

返回值:如果前num 字节完全相等,返回值就=0;在前num 字节比较过程中,如果出现str1[n]与str2[n]不等,则依次比较str1和str2的前n位,设i(i<n)为两字符串首次的不同位,则返回(str1[i]-str2[i])。

示例:

#include<string.h>
#include<stdio.h>
int main(void)

char *buf1="aaabbb",*buf2="bbbccc",*buf3="ccc";
int ptr;
ptr=strncmp(buf2,buf1,3);
if(ptr>0)
printf("buffer2 is greater than buffer1\\n");
elseif(ptr<0)
printf("buffer2 is less than buffer1\\n");
ptr=strncmp(buf2,buf3,3);
if(ptr>0)
printf("buffer2 is greater than buffer3\\n");
elseif(ptr<0)
printf("buffer2 is less than buffer3\\n");
return(0);

运行结果:

buffer2 is greater than buffer1
buffer2 is less than buffer3

参考技术A 这个函数是用来比较字符串的某几位是不是相同的吧。如果想知道两个字符串的长度并比较的话先用getlength来获取字符串的长度,然后再比较。 参考技术B 看百度词条strncmp。
函数名: strncmp
功 能: 串比较
用 法: int strncmp(char *str1, char *str2, int maxlen);
功能:比较字符串s1和s2的前n个字符。

说明:
当s1<s2时,返回值 -1
当s1=s2时,返回值 0
当s1>s2时,返回值1
例:
#include<iostream>
#include<string>
using namespace std;
void main()

char *s1="Hello, Programmers!";
char *s2="Hello, programmers!";
int r;
r=strncmp(s1,s2,6);
cout<<r<<endl;

结果:0本回答被提问者和网友采纳

请问C++中两个字符串的大小是怎样比较的?

C++中两个字符串的大小比较方法如下:

1、首先,定义一个整型变量j,保存判断的结果。

2、接着,定义两个字符串变量,保存判断的字符串。

3、输入两个字符串,保存在变量s1和s2中。

4、比较字符串s1和s2的大小,保存在变量j中。

5、根据判断结果j的值,输出两个字符串的比较结果。

6、用compare函数比较两个字符串,当s1大于s2时返回值大于0,当s1等于s2时返回值等于0,当s1小于s2时返回值小于0。

参考技术A

会先比较长度,如果长度大那自然就大,

如果长度相等,会去从左到右逐个比较ascii码的大小,

如果相等则比较下一个,直到有结果。

本回答被提问者和网友采纳
参考技术B

如果是std::string的话,可以直接用关系符号,例如小于号(<),比较。

如果是传统的C字符串(const char[])的话,和C语言一样,调用strcmp比较,小于返回负数,大于返回正数,等于返回0。

例如

#include <cstring>
#include <iostream>
#include <string>

int main()


    std::string s = "abc";
    std::string t = "def";

    const char u[] = "ghi";
    const char v[] = "jkl";


    std::cout << s << (s < t ? "<" : ">=") << t << std::endl;
    std::cout << u << (std::strcmp(u, v) ? "<" : ">=") << v << std::endl;

    return 0;

输出是

abc<def
ghi<jkl

注意无论用哪种方法,顺序规则都是字典规则(lexicographical order)。也就是:

    从前往后,逐位比较,第一个不同的字符,按照char的顺序比较(例如字母a小于字母b)

    如果第一个字符串是第二个字符串的子列,例如“abc”和“abcde”,则前者小于后者

    空字符串小于其它所有字符串

    当且仅当字符串长度和每个位置上字符都相同,字符串相等

字典规则示例:

以下程序给字符串排序 01, 1, 0, 0000, 10, 100 从小到大排序

#include <algorithm>
#include <iostream>
#include <string>
#include <vector>

int main()


    std::vector<std::string> vec  "01", "1", "0", "0000", "10", "100";
    std::sort(vec.begin(), vec.end());
    for (auto elem : vec)
        std::cout << elem << " ";

    return 0;

输出是

0 0000 01 1 10 100

注意按照字典规则,0000排在1前面,那个说先看字符串长度的答案纯属误人子弟。

参考技术C strcmp(str1,str2);
如果str1比str2大,则上表达式>0,等则=0,小则<0。
参考技术D 不是strcmp吗?

以上是关于c++编程中怎样用strncmp函数计算两个字符串的数目,并比较大小。的主要内容,如果未能解决你的问题,请参考以下文章

c++多线程同时运行两个函数该怎样编程啊?

字符串函数---strcmp()与strncmp()详解及实现

c++中有几种字符串函数 如strcpy strcat 还有那分别是啥意思?

怎样用c语言编程清屏

根据字符长度怎样计算出需要显示的label宽度高度

请问C++中怎样实现两个时间的比较