开发平台(Platform): (Ex: Win10, Linux, ...)
macOS
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
gcc
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
无
问题(Question):
bus error
喂入的资料(Input):
无
预期的正确结果(Expected Output):
正确strcpy
错误结果(Wrong Output):
bus error
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
可正确完成:
程式码a.
https://pastebin.com/dic0xAgn
我想问的错误程式码:
程式码b.
https://pastebin.com/6S1VE5nF
另外一种程式码:
程式码c.
https://pastebin.com/w8J8cxBv
补充说明(Supplement):
不知道是不是我观念问题错很大,连续两篇有关string的位址问题XD
先说,这三个程式码只差在第13行
a.是我后来突发奇想这样改,结果对了:
strcopy((char *)&a, (char *)&b);
b.我一开始是这样写的:
strcopy(a,b);
c.是我用线上编译器做的,b喂进去会错,才这样在线上编译器改:
strcopy(&a,&b);
我一开始在本机的compiler是写b的程式码,
一直出现bus error,真的是搞不懂,
因为我有实作另一个strlen,就是用b的方法传进去,
然后内部s++;count++;这样
但在copy会错,
后来在线上编译器实作b的方法,也会错,
改成c后,就可以了
但很不合理啊,c这样传入的应该是char **,居然会对?
后来在本机的compiler写a的做法,
我自己觉得很奇怪,为什么这样可以,但b不行?
求大大们开示