作者st1009 (前端攻城师)
看板C_and_CPP
标题[问题] strcmp的输出怪怪的
时间Sun Mar 3 15:42:46 2019
开发平台(Platform): (Ex: Win10, Linux, ...)
Linux mint
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
g++
或
http://www.compileonline.com/compile_c_online.php
问题(Question):
我的strcmp跑出来的结果怪怪的20,一开始我以为是overflow害的,
结果我把空间变大後答案是18,我不太懂为甚麽...
如果直接输入字串,会是正常的答案。
喂入的资料(Input):
struct {char str1[10], str2[10];} s;
strcpy(s.str1, "yahoo");
strcpy(s.str2, "google");
strcat(s.str1, strcat(s.str2, "adobe"));
预期的正确结果(Expected Output):
1
错误结果(Wrong Output):
20
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
http://codepad.org/KF2FCnr8
# include<stdio.h>
# include<string.h>
int test04(void){
struct {char str1[10], str2[10];} s;
strcpy(s.str1, "yahoo");
strcpy(s.str2, "google");
strcat(s.str1, strcat(s.str2, "adobe"));
return strcmp(s.str1, s.str2);
}
int main()
{
printf("%d\n", test04()); /* Problem 2-4 */
return 0;
}
补充说明(Supplement):
隔壁棚Grad-ProbAsk 程式设计的北科大考生们正在水深火热中,恳请大大们协助<(_ _)>
--
半壁河山半攻守
半争成败半悟道
许银川
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 1.163.147.201
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1551598970.A.1B2.html
1F:→ aa0917954358: strcmp返回值只跟你说有三种情况:小於零、等於零和 03/03 16:11
2F:→ aa0917954358: 大於零,没说大於零的状况一定要回传1,要根据strcm 03/03 16:11
3F:→ aa0917954358: p如何实作的 03/03 16:11
可是我直接打
printf("%d\n", strcmp("yahoogoogleadobe", "googleadobe"));
输出是1...
s.str1跟这样是差在哪?怎会变成18?不懂QAQQQ
因为考试是希望我们写出输出是啥...
4F:→ loveme00835: 你有去明白它回传值的涵义吗? 你当它是 strlen()? 03/03 16:25
5F:→ loveme00835: 呼叫函式前看它的说明是基本中的基本 03/03 16:29
我有看过阿Q strcmp()
需要两个字串当作参数,比较两个字串是否相等,相等就回传 0,
第一个字串大於第二个字串回传正值,反之回传负值。
但是题目要求写出他的值...说明上没说值是怎麽取的QAQQQ
7F:→ ninijimmy: 北科考题107? 03/03 17:11
对北科考题107考题
8F:→ crazycy: 答案就是大於零的整数 没有定义确切值 03/03 17:12
好的,谢谢您 <3
9F:→ ninijimmy: strcmp是要回传 两个相差的ascii值喔!! 编译环境不同 03/03 17:15
10F:→ ninijimmy: 有差,我当初写这题弄很久,g++他只会传 0,1,-1,我用 03/03 17:15
11F:→ ninijimmy: 线上编译器他是回传20(y&e相差20) 03/03 17:15
12F:→ ninijimmy: 我想这题应该正解是20 03/03 17:16
13F:→ ninijimmy: ps 106年也有类似题但比较简单~~~ 03/03 17:18
14F:推 ctrlbreak: 你的字串爆了吧? XD 03/03 17:25
15F:推 ctrlbreak: 我看他的source传差值是正常的, 固定字串传1,-1应该是 03/03 17:28
了解了,原来如此,谢谢您们<(_ _)>
※ 编辑: st1009 (1.163.147.201), 03/03/2019 17:30:10
17F:推 choosin: 是不是差值根本不重要 而是实作要符合规格 03/05 16:44
18F:→ st1009: 考试会考就重要...不然实作时不知道,我也可以自己定义一 03/10 10:54
19F:→ st1009: 个fn来解 03/10 10:54