SIGSEGV; missing file; when running program using sscanf
Question
I will below describe the error that I get when calling the function sscanf
.
Some of my code:
#include <cstdio>
(..)
int device_num = 0;
int frameTime = sscanf(currentStringVector[2].c_str(), "%d", &device_num);
It is part of a module of OmNet++, so I compile it using OmNet++ . I get the following error message in GDB:
"Program received signal SIGSEGV, Segmentation fault. __rawmemchr_sse2 () at ../sysdeps/x86_64/multiarch/../rawmemchr.S:31 31 ../sysdeps/x86_64/multiarch/../rawmemchr.S: Filen eller katalogen finns inte. in ../sysdeps/x86_64/multiarch/../rawmemchr.S"
The problem started to incur when I called sscanf
.
I am running the program in Ubuntu on a 64-bits system. How do I resolve the above problem?
Thanks!
Solution
With OMNeT++, you can use a debugger like gdb when running your program from the command line. The IDE also lets you debug your code.
My guess is that currentStringVector[2].c_str()
is not valid. Maybe the vector is smaller than that.