冷回清风暖 发表于 2020-8-30 16:48:03

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:}

baige 发表于 2020-8-30 16:51:05

strcmp函数判断到f后的字符“h”与“z”,同时ASCII码,h < z
便给出了结果 前面的字符小于后面的字符
后面就不再判断了
strcmp只判断第一个不同的然后就返回了

冷回清风暖 发表于 2020-8-30 16:53:27

baige 发表于 2020-8-30 16:51
strcmp函数判断到f后的字符“h”与“z”,同时ASCII码,h < z
便给出了结果 前面的字符小于后面的字符
后 ...

那我上面给出的那串代码,的执行结果,明显str1要小于str2,但是结果返回的确是 str1 > str2。如果就字符串大小比较功能的话 ,strcmp不就有了很多局限吗?

baige 发表于 2020-8-30 17:06:23

冷回清风暖 发表于 2020-8-30 16:53
那我上面给出的那串代码,的执行结果,明显str1要小于str2,但是结果返回的确是 str1 > str2。如果就字符 ...

你是要比较长度的话用strlen求两个的长度,然后进行比较两个长度的大小

永恒的蓝色梦想 发表于 2020-8-30 17:24:45

冷回清风暖 发表于 2020-8-30 16:53
那我上面给出的那串代码,的执行结果,明显str1要小于str2,但是结果返回的确是 str1 > str2。如果就字符 ...

int strcmplen(char const* a, char const* b) {
    return strlen(a) - strlen(b);
}

sunrise085 发表于 2020-8-30 18:32:19

你对函数功能有误解吧!
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;
}

majian890324 发表于 2020-8-31 06:59:52

{:10_279:}{:10_279:}

Cool_Breeze 发表于 2020-8-31 10:29:02

{:10_279:}

鱼的七秒记忆 发表于 2020-8-31 10:58:44

{:10_279:}

开心小傻猪 发表于 2020-8-31 13:29:35

{:10_277:}

潜水小蓝人 发表于 2020-8-31 13:50:46

{:10_250:}

学抓蟒蛇 发表于 2020-9-1 10:18:04

{:10_254:}

象棋爱好者 发表于 2020-9-1 13:34:51

{:10_250:}

象棋爱好者 发表于 2020-9-1 13:35:36

谢谢你

胡鸣谦 发表于 2020-9-4 16:25:02

问一下,vscode是怎样配置c/c++的?
我安装了c/c++插件,可是怎么配置?

冷回清风暖 发表于 2020-9-6 08:39:47

胡鸣谦 发表于 2020-9-4 16:25
问一下,vscode是怎样配置c/c++的?
我安装了c/c++插件,可是怎么配置?

vs不是安装完之后就能直接写C/c++吗..新建一个c++空项目

胡鸣谦 发表于 2020-9-6 10:57:51

冷回清风暖 发表于 2020-9-6 08:39
vs不是安装完之后就能直接写C/c++吗..新建一个c++空项目

怎么运行???

冷回清风暖 发表于 2020-9-6 15:09:26

胡鸣谦 发表于 2020-9-6 10:57
怎么运行???

https://blog.csdn.net/iamsongyu/article/details/89630831
你参考下这个,百度上有很多教程。
我习惯直接创建一个c/c++空项目
页: [1]
查看完整版本: strcmp函数疑问