2012-03-08 20 views
0

我將在下面描述我在調用函數sscanf時遇到的錯誤。SIGSEGV;丟失文件;當使用sscanf運行程序

我的一些代碼:

#include <cstdio> 
(..) 
int device_num = 0; 
int frameTime = sscanf(currentStringVector[2].c_str(), "%d", &device_num); 

它的OMNeT ++的模塊的一部分,所以我把它用OMNET ++編譯。 我在GDB收到以下錯誤信息:

「節目在../sysdeps/x86_64/multiarch/../rawmemchr.S:31 31接收信號SIGSEGV,分割過錯 __rawmemchr_sse2()。 ./sysdeps/x86_64/multiarch/../rawmemchr.S:Filen埃勒katalogen芬蘭人INTE 在../sysdeps/x86_64/multiarch/../rawmemchr.S」

的問題開始承擔當我打電話給sscanf

我在64位系統上運行Ubuntu中的程序。 如何解決上述問題?

謝謝!

+1

你可以在調用sscanf之前打印'currentStringVector [2] .c_str()'嗎? – ciphor 2012-03-08 13:38:31

+0

你可以發佈聲明和填充'currentStringVector'的代碼嗎? – hmjd 2012-03-08 13:39:51

+0

包含一段代碼的自我(在ideone.com上運行並顯示相同行爲)對於此問題進行調試將非常有用。 – PlasmaHH 2012-03-08 13:46:29

回答

1

使用OMNeT ++時,可以使用gdb等調試器從命令行運行程序。 IDE還可以讓你調試你的代碼。

我的猜測是currentStringVector[2].c_str()無效。也許矢量比那個小。

+0

謝謝! 是的,我注意到發佈後,向量短於該長度的一個實例在它所在的for-loop中。 雖然錯誤狀態令人困惑:'文件丟失'... – 2012-03-08 17:27:08

相關問題