-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