C++小白来提问关于strcmp的问题

我用strcmp()来比较两个字符串A和B
A="HelloWorld"
B="Hello World"
结果是B比A小
不明白啊,不是空格算1字符么,怎么B还比A小呢?

c++

5个回答

strcmp(A,B);
相当于:
strcmp("HelloWorld" , "Hello World");
这个比较函数的功能是把上面这两个字符串中的每一个字符的ASC码值进行比较,遇到'\0'或者不相同的则停止,并返回比较值。
第一步:比较H 和 H 这个字母的ASC值相同,且不为'\0',继续比较下一位
e...原理同上
l...原理同上
l...原理同上
o..原理同上
这一步:该比较 W 和 ' '(空格)了,W的ASC码值 > ' '(空格)的ASC码值。此时虽然没有遇到'\0', 但是所比较的两个字符不同,于是比较结束,返回:A>B.
事实上返回的应该是一个枚举值:1.
例:
strcmp(str1 , str2);
若str1>str2 返回1,
若str1==str2 返回0,
若str1<str2 返回-1,

空格的ascll码值比W的ascll码值小,所以B比A小。strcmp是挨个比较字符的大小的

qq_31360711
听着夜曲逛威尼斯 也就是说其实和字符串长短无关?那是能通过<>和strlen来比较总大小是么?
接近 4 年之前 回复

strcmp(const char str1[],const char str2 [])函数
定义为两个字符串按位逐字符进行比较(比较ASC码),除非遇到空位符('\0')或者不一样,则停止。

空格比字母小,所以排前面,没问题啊。

空格也是ASCII码,比字母小。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!