请求帮助修改一个很小、很简单的C++程序(急用,重谢)

来源:百度知道 编辑:UC知道 时间:2024/05/06 08:30:06
我是非计算机专业的。恳请请各位帮忙看一下下面的小程序总不能正确输出。
#include <iostream>
using namespace std;
void copystring(char *p,char *q)
{
static int i=0;
for( i=0;i<=5;i++)
*(q+i)=*(p+10+i);
q[i+1]='\0';
}
int main (int argc, char * const argv[])
{
char *p=new char[20];
p="PPPPPQQQQNNNJJJIIII";
char *q=new char[7];
q="MMMMMM";
copystring(p,q);
delete p;
cout<<q<<endl;
delete q;
return 0;
}
这个小程序是一个稍大一点的程序的一部分。
多谢!!!
谢谢个位帮忙。
这个程序没有语法错误。就是不能执行。
编译器总是返回:test has exited due to signal 10 (SIGBUS).
这个程序的目的是从p中第10个值开始赋给q.

#include <iostream>
using namespace std;
void copystring(char *p,char *q)
{
int i=0;
for(i=0;i<=5;i++)
*(q+i)= *(p+10+i);

q[i+1] = '\0'; //改为q[i]='\0';下面的char*q可以为7(i=6)
}
int main (int argc, char * const argv[])
{
char *p=new char[20];
char *backP = p;
p="PPPPPQQQQNNNJJJIIII"; //p指针移动了,不能delete
char *q=new char[8]; //变8
char *backq = q;
q="MMMMMM"; //q指针也移动了,不能赋值
copystring(p,backq);

delete backP;
cout<<backq<<endl;
delete backq;

return 0;
}

自己理解下

void copystring(char *p,char *q)
{
static int i=0;
for( i=0;i<=5;i++)
*(q+i)=*(p+10+i);
q[i+1]='\0';
}
中间,你是不是希望写成这样:
void copystring(char *p,char *q)
{
static int i=0;
for( i=0;i<=5;i++) {
*(q+i)=*(p+10+i);