【发布时间】:2012-03-08 13:34:46
【问题描述】:
下面我将描述调用函数sscanf时遇到的错误。
我的一些代码:
#include <cstdio>
(..)
int device_num = 0;
int frameTime = sscanf(currentStringVector[2].c_str(), "%d", &device_num);
它是 OmNet++ 模块的一部分,所以我使用 OmNet++ 编译它。 我在 GDB 中收到以下错误消息:
"程序收到信号SIGSEGV,分段错误。 __rawmemchr_sse2 () 在 ../sysdeps/x86_64/multiarch/../rawmemchr.S:31 31 ../sysdeps/x86_64/multiarch/../rawmemchr.S:Filen eller katalogen finns inte. 在 ../sysdeps/x86_64/multiarch/../rawmemchr.S"
当我打电话给sscanf时,问题就开始出现了。
我在 64 位系统上的 Ubuntu 中运行该程序。 如何解决上述问题?
谢谢!
【问题讨论】:
-
你能在调用 sscanf 之前打印出 'currentStringVector[2].c_str()' 吗?
-
你能发布声明和填充
currentStringVector的代码吗? -
一段自包含的代码(将在例如 ideone.com 上运行并表现出相同的行为)对于调试此问题最有用。
-
向量
currentStringVector有多大(即size的返回值)?