我在 spoj 和其他网站中解决的许多问题都遇到了段错误(SIGSEGV)。我给出了问题陈述链接和代码。谁能告诉我我在下面犯的错误。 问题 : http://goo.gl/CVROl
提前致谢。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int main()
{
char a;
string final,dummy;
int t,h,p,k,z;
scanf("%d",&t);
while(t)
{
cin>>a>>h>>p;
final=a;
for(int i=0;i<h;i++)
{
k=0;
for(int j=0;final[j]!='\0';j++)
{
if(final[j]=='a')
{
dummy[k]='a';
dummy[k+1]='b';
k+=2;
}
else
{
dummy[k]='b';
dummy[k+1]='a';
k+=2;
}
}
final=dummy;
}
printf("%c\n",final[p-1]);
t--;
}
return 0;
}
最佳答案
正如 sstn 所指出的,您没有为 dummy 分配内存。因为它是一个字符串,而且看起来您只想向它附加字符,您可以这样做:
for(int j=0;j < final.size();j++)
{
if(final[j]=='a')
{
dummy.push_back('a');
dummy.push_back('b');
}
else
{
dummy.push_back('b');
dummy.push_back('a');
}
}
final=dummy;
关于c++ - 我的代码中的段错误(SIGSEGV),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4984834/