C++ 我的代码中的分段错误(SIGSEGV)
我得到分割错误(SIGSEGV)的许多问题,iv解决了spoj和其他网站。我正在给problm语句链接和代码。有谁能告诉我下面我犯的错误吗。 问题: 提前谢谢C++ 我的代码中的分段错误(SIGSEGV),c++,segmentation-fault,C++,Segmentation Fault,我得到分割错误(SIGSEGV)的许多问题,iv解决了spoj和其他网站。我正在给problm语句链接和代码。有谁能告诉我下面我犯的错误吗。 问题: 提前谢谢 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; int main() { char a; string final,dumm
#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;
}
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
字符a;
最后一个字符串,虚拟;
int t,h,p,k,z;
scanf(“%d”、&t);
while(t)
{
cin>>a>>h>>p;
最终=a;
for(int i=0;ifinal
的类型为std::string
,且不以null结尾
<>在for for循环中:<代码> for(int j=0;最终[j]!=‘0’;j++):/>代码。您将检查字符串的结尾(如< c >代码> char */COD>空终止字符串),但是在C++中,您应该以其他方式迭代字符串字符:使用迭代器,计数字符串大小或某事。
快速解决此问题(不知道是否还有其他问题)的方法是获取以null结尾的char*
表示形式的final
:final.c_str()
并在执行过程中对其进行迭代。正如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;
for(int j=0;j
我看不出有为“dummy”分配的内存。或者,for(int j=0;j
会达到我认为的效果。