2012-06-06 22 views
0

我試圖在裝配中連接兩個字符串,但我似乎無法得到它的工作。我有以下的代碼:裝配中的Strcat

.data 

message: .asciz "message" 
leading: .asciz "leading" 

.globl main 

main: 
    push $message 
    push $leading 

    call strcat 

    push %eax 

    call printf 
... 

當我嘗試將一個字符串追加超過16個字符到另一個字符串,它根據GDB給出了一個分段故障在strcat的調用。我在這裏錯過了什麼嗎?有沒有什麼辦法讓strcat處理超過16個字符的字符串?

謝謝!

回答

2

您尚未分配超過總共16個字節。您需要爲結果字符串保留足夠的內存以適應目標。

+0

謝謝你的快速回答!你能解釋一下用字符串怎麼做?我有點新裝配;) – Devos50

+0

沒關係,我找到了。我必須使用緩衝區,通過使用strcpy將消息複製到該緩衝區,然後我可以安全地追加:) – Devos50