注册 登录
编程论坛 C++教室

字符串插入问题

xishui777 发布于 2011-01-03 18:42, 539 次点击
#include<iostream>
using namespace std;
void qaz(char *a,char *b)
{
    int i,j,k,n;
    char max=a[0];
    for(i=0;i<strlen(a);i++)
        if(max<a[i])
        {
            max=a[i];
            n=i;
        }
    for(j=strlen(b)-1;j>=0;j--)
    {
        for(k=strlen(a)+1;k>n+1;k--)
            a[k]=a[k-1];
        a[n+1]=b[j];
    }
}
int main()
{
    char a[100],b[50];
    cout<<"本程序是在a串最大字符后面插入b串"<<endl<<endl;
    cout<<"输入a串:";
    cin.getline(a,sizeof(a));
    cout<<"输入b串:";
    cin.getline(b,sizeof(b));
    qaz(a,b);
    cout<<endl<<"插入后"<<endl;
    cout<<"刷新a串:"<<a<<endl;
    cout<<"刷新b串: "<<b<<endl;
    system("pause");
    return 0;
}
当我输入a串:aaazxxx
b串:bbb
运行都很正常
当我输入a串:ni hao ma?
b串:ni hao
运行时程序崩溃
这是为什么?
2 回复
#2
qq10235692232011-01-03 21:51
估计是第二个字符串有空格的原因吧。
把cin.getline()改成gets()试试.
#3
kspliusa2011-01-03 23:37
程序代码:
for(j=strlen(b)-1;j>=0;j--)
    {
        for(k=strlen(a)+1;k>n+1;k--)
            a[k]=a[k-1];
        a[n+1]=b[j];
    }
这里写的有问题吧,  a[n+1]=b[j];这句中n就没变过啊!
1