争取做this Big Sorting problem on Hackerrank。我知道有写的算法更简单的方法,但我想刷了我的C知识,因此想挑战自己,写了二叉搜索树的问题。赛格故障 - 大排序
二叉搜索树我写的,似乎为整数的工作,但是,这个问题有串的数字形式输入类型。所以我试着将它改为使用字符数组,并且strcmp()
为了比较数字串。
有人可以帮助我弄清楚是怎么回事,我怎么可能能够解决这个问题?
赛格故障:
GDB trace:
Reading symbols from solution...done.
[New LWP 11287]
Core was generated by `solution'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 strlen() at ../sysdeps/x86_64/strlen.S:106
#0 strlen() at ../sysdeps/x86_64/strlen.S:106
#1 0x00007f4f76b2e455 in __strcpy_chk (dest=0xfb0020 "", src=0x0,
destlen=105) at strcpy_chk.c:28
#2 0x00000000004007e3 in strcpy (__src=0x0, __dest=<optimized out>)
at /usr/include/x86_64-linux-gnu/bits/string3.h:110
#3 create_node (key=0x0) at solution.c:25
#4 0x00000000004006af in main() at solution.c:70
代码:
明白了,这是有道理的。而'%104s' - 是必要的,还是只是增加了预防措施,我们没有占用太多内存? – Adjit
硬编码104种破坏了使用MAXLEN定义的目的。 – Dukeling
@Dukeling:是的,'的scanf()'是如此笨拙的我应该破除的定义。 – chqrlie