_本間梨花 (逃げじゃ駄目だ!)
问题出在for循环足够次数后if语句无法寻找到字符串尾的'\0',可以的话希望能得知原因。。
#include <iostream>
#include <cstring>
using namespace std;
int main( )
{
char a[20],b[20];
cin>>a>>b;
char *p=new char[strlen(a)+strlen(b)+3];
p=a;
for(int i=0;a[i-1]!='\0';i++)
{
if(a='\0')
{
p=',';
p[i+1]=' ';
i+=2;
for(int j=0;b[j]!='\0';i++,j++)
{
p=b[j];
}
p[i+1]='\0';
cout<<p<<endl;
delete [] p;
return 0;
}
}
}
#include <stdio.h>
int main() {
char a[20], b[20], p[40];
scanf("%s", a);
scanf("%s", b);
snprintf(p, sizeof p, "%s,%s", a, b);
printf("%s\n", p);
return 0;
}
额……看来全靠优化了
其次,a=='\0'……任何情况都不会为真,因为a是一个地址
最后,你用的什么编译器……感觉warning满天飞/根本编译不过啊
不过两段复制是承上启下的顺序关系,没必要强行嵌在一个if block里(而且根本不用if嘛)
顺带,
我本身不太会C++,所以是照着LZ的原样改的23333