C语言strncmp的问题

int
strncmp(const char *cs, const char *ct, size_t
count)
{

signed char __res = 0;

while (count) {

if ((__res = *cs - *ct++) != 0 ||
!*cs++)
//比较到结束符\0,时,已经做了__res = *cs -
*ct了,所以不等长度时,肯定返回不为0

break;

count--;

}

return __res;
}
为什么要判断cs是否达到尾部,不判断不可以吗,为什么不判断 ct 呢?

1.如果 cs 不判断是否到达尾部,如果 cs, ct 字符一样长,那么会比较 '\0'后面的数据,这样就不对了。
2.ct之所以不用比较,你已经说了,如果不等长,比较到结束符\0时,肯定返回不为0。追问

那我只判断ct不可以吗?

追答

可以啊

温馨提示:内容为网友见解,仅供参考
无其他回答

C语言strncmp的问题
1.如果 cs 不判断是否到达尾部,如果 cs, ct 字符一样长,那么会比较 '\\0'后面的数据,这样就不对了。2.ct之所以不用比较,你已经说了,如果不等长,比较到结束符\\0时,肯定返回不为0。

【C语言】关于strcpy的问题,求高手指点一下。
首先怀疑一下你的程序能否正常编译,花括号不匹配 建议你先把上面这问题解决后验证一下吧 因为这有可能导致一些其它问题

关于C语言中strcmp的问题
a.*strA==0的话,*strB可能为0,也可能不为0 b.*strA!=0的话,*strB一定为0 所以 (3)(int)*strB可能为0,可能大于0 (4)(int)*strA只能是大于0 问题是strA是strB的前缀的时候,返回strA大于strB,这个好像不对吧?

c语言中strcmp的用法
C语言中strcmp的用法 在C语言中,strcmp函数是用于比较两个字符串的函数。它位于库中。该函数主要用于比较两个字符串是否相同,或者确定一个字符串是否大于或小于另一个字符串。以下是关于strcmp函数的 函数原型:在C语言中,strcmp函数的标准原型为:`int strcmp;`。它接受两个常量字符指针作为参数,这...

求详解:strncmp函数
在C语言中,strncmp函数是一个用于比较两个字符串的实用工具。它返回一个整数值,代表了两个字符串在指定长度内的字符比较结果。这个函数的原型如下:int strncmp(const char * cs, const char * ct, size_t count);函数接收三个参数:第一个参数cs是待比较的字符串,第二个参数ct是目标字符串,...

C语言的字符串函数strcmp()和strcnmp()
在C语言的世界里,字符串的比较是一项基本任务,strcmp()和strncmp()这两个强大的函数便是我们不可或缺的工具。让我们深入了解它们的工作原理和应用场景。strcmp()函数:字符串全比较的魔术师strcmp()的职责是细致地比较两个字符串,其返回值像一位严谨的裁判,给出0(两个字符串相等)、正(字符串...

C语言的字符串函数strcmp()和strcnmp()
GCC返回该字符对应的ASCII码的差值,VC返回-1或1。参考资料:[1] 史蒂芬・普拉达. C Primer Plus (第6版) 中文版[M]. 人民邮电出版社, 2016. [2] C语言strcmp()函数:比较字符串(区分大小写)- 来源 [3] C语言strncmp()函数:比较字符串的前n个字符(区分大小写)- 来源 ...

strcmp(a,b)字符串怎么比较
strcmp(a,b)函数用于比较两个字符串a和b。1. strcmp()函数的概述 strcmp()是C语言中的一个标准库函数,用于比较两个字符串。它的原型通常定义在头文件中。这个函数的作用是按照字典顺序(ASCII值)比较两个字符串,并返回一个整数值来表示这两个字符串的相对关系。2. strcmp()函数的工作原理 strcm...

C语言。为什么永远输出-52呢?
strncmp比较的是两个字符串,结尾的'\\0'字符是不参与比较的,所以你的代码缺少一个字符串结尾的判断。另外,字符串比较,for循环只要比较单个字符就可以了,每次都比较一个字符串,效率低下 for(i=0;i<1000;i++)if(s1[i]==s2[i])continue;else break;比较完成后,i+1是不同字符的后面一个...

C语言 strcmp()比较两个字符串前三位 应该是相等额 怎么不显示???_百...
strcmp只能完全比较,全部相同返回值才等于0 比较前3位可以:if((str1[0]==str1[0])&&(str1[1]==str1[1])&&(str1[2]==str1[2]))printf("前三位str1=str2 \\n");

相似回答
大家正在搜