strcmp函数疑问
#include <stdio.h>#include <string.h>
int main()
{
char *str1 = "c";
char *str2 = "FishC.com";
int t = strcmp(str1, str2);
printf("%d\n", t);
getchar();
return 0;
}
字符串1(str1)明显小于字符串2(str2)
不过strcmp函数返回值为1,给出了str1 > str2的结果。
是不是该函数只能用于判断如下字符串的大小:
“asdf” 与 “asdfg”
即两个字符串一定要有相同部分。
按照下面这个例子:
“asdfhgfd” 与 “asdfz”
strcmp函数判断到f后的字符“h”与“z”,同时ASCII码,h < z
便给出了结果 前面的字符小于后面的字符
但是此时前面的字符(“asdfhgfd” ),后面还由字符(gfd)未判断,而此时“asdfhgfd”应该是大于“asdfz”的。
突然就陷入到了这样的思维里面,大家帮帮忙把我拉出来把{:5_100:} strcmp函数判断到f后的字符“h”与“z”,同时ASCII码,h < z
便给出了结果 前面的字符小于后面的字符
后面就不再判断了
strcmp只判断第一个不同的然后就返回了 baige 发表于 2020-8-30 16:51
strcmp函数判断到f后的字符“h”与“z”,同时ASCII码,h < z
便给出了结果 前面的字符小于后面的字符
后 ...
那我上面给出的那串代码,的执行结果,明显str1要小于str2,但是结果返回的确是 str1 > str2。如果就字符串大小比较功能的话 ,strcmp不就有了很多局限吗? 冷回清风暖 发表于 2020-8-30 16:53
那我上面给出的那串代码,的执行结果,明显str1要小于str2,但是结果返回的确是 str1 > str2。如果就字符 ...
你是要比较长度的话用strlen求两个的长度,然后进行比较两个长度的大小 冷回清风暖 发表于 2020-8-30 16:53
那我上面给出的那串代码,的执行结果,明显str1要小于str2,但是结果返回的确是 str1 > str2。如果就字符 ...
int strcmplen(char const* a, char const* b) {
return strlen(a) - strlen(b);
} 你对函数功能有误解吧!
strcmp(str1, str2)是逐个比较两个字符串中字符的ASCII码的大小。一旦比较出大小就不再看后面的字符。
该函数不是比较两个字符串的长度大小
你若要比较两个字符串的长度大小需要用strlen获取字符串的长度,然后比较大小
#include <stdio.h>
#include <string.h>
int main()
{
char *str1 = "c";
char *str2 = "FishC.com";
int t = strlen(str1)>strlen(str2)?1:0;
printf("%d\n", t);
getchar();
return 0;
}
{:10_279:}{:10_279:} {:10_279:} {:10_279:} {:10_277:} {:10_250:} {:10_254:} {:10_250:} 谢谢你 问一下,vscode是怎样配置c/c++的?
我安装了c/c++插件,可是怎么配置? 胡鸣谦 发表于 2020-9-4 16:25
问一下,vscode是怎样配置c/c++的?
我安装了c/c++插件,可是怎么配置?
vs不是安装完之后就能直接写C/c++吗..新建一个c++空项目 冷回清风暖 发表于 2020-9-6 08:39
vs不是安装完之后就能直接写C/c++吗..新建一个c++空项目
怎么运行??? 胡鸣谦 发表于 2020-9-6 10:57
怎么运行???
https://blog.csdn.net/iamsongyu/article/details/89630831
你参考下这个,百度上有很多教程。
我习惯直接创建一个c/c++空项目
页:
[1]