C语言题目哪里错了

2025-01-08 01:32:39
推荐回答(4个)
回答1:


char* copy(char *p1, int x)
{
char *p2=new char[31];
char *p = p2;
p1 += x - 1;
for (; *p1!= '\0'; p1++, p++) {
*p = *p1;
}
*p = '\0';
return p2;
}
int main()
{
char a[31];
int x;
gets_s(a);
printf("请输入您想从第几个字符串开始复制:");
scanf("%d", &x);
printf("复制的结果为:");
char * p=copy(a, x);
printf("%s", p);
delete[]p;
scanf("%s", a);
return 0;
}

你的代码p2没有赋值 它随机指向内存区域 你修改它指向的内存直接报错

你要求是复制字符串 而你的程序里只实现了输出字符 

回答2:

指针p2未初始化,这是很危险的一个错误。
最好将p2指向明确的地址,且一直在明确的地址内操作。
如: char a[30]; //由于你这字符串不超过30
p2=a;

回答3:

回答4:

p2是一个随机值