char a[9]="a",b[9]="ab";则strcmp(strcat(a,b),b)的值是什么?原因?
C语言strcmp使用问题
- 提问者网友:美人性情
- 2021-05-14 07:27
- 五星知识达人网友:woshuo
- 2021-05-14 07:38
有两个函数,一个是strcat(),是用来拼接连个字符串的,题目中就是将字符数组a和b中的字符拼在一起,然后赋值给a数组,例如strcat("a","ab")的结果就是"aab"。而strcmp()是比较两个字符串。从第一位开始直到找到不相同的字符然后返回一个值,如果前者的ASCII大就是1,相等就是0,后者ASCII大,值就是-1.比如strcmp("aab","ab"),从第一位开始,第一个不相同的是第二位,前者是"a",后者是"b",因为"a"的ASCII是65,"b"的是66,所以后者大于前者,返回值为-1.这样可以理解吗?
- 1楼网友:由着我着迷
- 2021-05-14 11:49
strcat(a,b)的结果为"aab",b的字符串为"ab"
把两个字符串从左到右进行比较,"aab"第二个字符'a'小于"ab"第二个字符'b',
所以,strcmp(strcat(a,b),b)返回小于0的数值,默认是-1。
- 2楼网友:北方的南先生
- 2021-05-14 10:11
strcat(a,b) ,是把b追加到a的尾部,所以a中是aab
strcmp("aab","ab") 进行比较,而规则是按次序依次相减,得0时接着比,直到结束,不得0返回,
aab ab
'a'-'a' 0 继续
'a'-'b' -1 返回
所以返回-1
一般我们只看它的正负0,正时前面大,负时后面大,0时两者相等
- 3楼网友:行雁书
- 2021-05-14 09:55
strcat 函数是把两个字符串做连接,并返回连接后的字符串。
strcat(a,b)="aab"
所以,即求 strcmp("aab","ab") 的值,
strcmp 函数只有3种值,
当前面的字符串大于后面的字符串时,返回 1
当前面的字符串小于后面的字符串时,返回 -1
当前面的字符串等于后面的字符串时,返回 0
"aab" 和 "ab",第一个字母是相等的,第二个字母 ,a比b 小,
所以,最终strcmp(strcat(a,b),b)的值是: -1
- 4楼网友:duile
- 2021-05-14 08:53
strcmp(str1,str2)函数就是比较参数中两个字符串str1 和 str2的大小(大小写敏感,即"A" != "a"),如果完全相等,返回0,如果str1 < str2(按照字母顺序比较),返回-1,如果str1 > str2,则返回1。
strcat(str1,str2)函数就是两个参数连接起来、。
你的表达是先运算strcat(a,b),返回值是"ab",然后和b比较,b的值也是"ab",也就是strcmp("ab","ab"),前面和后面的相等应该等于0。最后的值就是“0”。
它们比较大小就是通过ASCII码比较。