-1
有人可以帮我解决我的问题吗?如何解决我的代码中的SIGSEGV问题
我写程序,它给了我分段错误,我不知道我可以用它做什么,我试了几个小时解决它,但我不能。
如果有人可以帮助它会很好!
这是我的代码:
#include <stdio.h>
#include <vector>
inline int fastScanfInt(FILE *input, int *x);
int main()
{
std::vector<int> v;
int t = 0;
fastScanfInt(stdin, &t);
int tmp = 0, test = 0;
test = fastScanfInt(stdin, &tmp);
while(test != EOF)
{
v.push_back(tmp);
test = fastScanfInt(stdin, &tmp);
}
std::vector<int>::iterator it;
int pos = 0, c, v_size = 0;
for(int i = 0; i < t; i++)
{
if(v[pos] % 2 == 0)
{
c = v[pos + 1];
it = v.begin();
std::advance(it, pos + 1);
v.erase(it);
v_size = v.size();
pos += c % v_size;
if(pos > (v_size - 1))
pos -= v_size;
}
else
{
c = v[pos];
it = v.begin();
std::advance(it, pos + 1);
v.insert(it, (c - 1));
v_size = v.size();
pos += c % v_size;
if(pos > (v_size - 1))
pos -= v_size;
}
}
for(int i = pos; i < v.size(); i++)
{
printf("%d ", v[i]);
}
for(int i = 0; i < pos; i++)
{
printf("%d ", v[i]);
}
}
inline int fastScanfInt(FILE *input, int *x)
{
register char c = getc(input);
if(c != EOF)
{
(*x) = 0;
for(; ((c < 48) || (c > 57)); c = getc(input));
for(; ((c > 47) && (c < 58)); c = getc(input))
(*x) = ((*x) << 1) + ((*x) << 3) + c - 48;
}
return c;
}
您是否尝试过使用gdb来调查问题? – bialpio 2014-11-21 23:49:05