lig*_*ong 2 c++ string-concatenation
我知道在SE中已经要求串联串联问题死亡.但据我所知,我已经完成了所有可以帮助我的问题,徒劳无功.
这是我希望用这个程序完成的:
最初我有一个= 0和b = 1,分别为n = 0和n = 1.
对于下一个输入,即从n = 3开始,我的结果应该是前两个字符串的连接.(就像Fibonacci序列一样;只有连接被连接替换)
因此,例如:
对于n = 3,我的输出应为"10".
对于n = 4,我的输出应该是"101"
对于n = 5,我的输出应该是"10110"
我编写的代码没有逻辑问题,但我收到了SIGSEGV错误,我不明白为什么.
#include <iostream>
#include<new>
#include<string.h>
using namespace std;
int main()
{
long int n,i;
char *a="0";
char *b="1";
char *c=new char[100000];
cout<<"Enter a number n:";
cin>>n;
for(i=0;i<n;i++)
{
strcat(b,a);
strcpy(a,b);
}
cout<<"\nRequired string="<<b;
Run Code Online (Sandbox Code Playgroud)
}
我究竟做错了什么?
strcat(b,a);调用未定义的行为,因为b指向字符串文字.
char * strcat ( char * destination, const char * source );
Run Code Online (Sandbox Code Playgroud)
连接字符串将字符串的副本附加
source到destination字符串.
由于这是C++,我建议你使用std::string和+运算符.或者a std::stringstream.