C++(vs2005)问题 下面程序哪儿错了,为什么运行不了

2024-12-24 18:00:20
推荐回答(4个)
回答1:

你程序里问题很多,不光是编译出错的这两个, str[i] = *q;只是把str[i]块内存的值改了,之后的str[i+1]还是原来的值,字符串拷贝可不是只传个指针就完了的。

// 076test.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include
#include
#include
insert(char *s, char *q, int i);//改成 char* insert(char *s, char *q, int i);
void main()
{
char *strin, *str;
int i;
str = "Hello world!";
strin = "big ";
printf("The original string:");
printf("\n%s\n", str);
printf("Please input the positon you want to insert:");
scanf("%d", &i);
str = insert(str, strin, i);
printf("\n%s", str);
getch();
}

char *insert(char *s, char *q, int n) //这里改了一下,和声明对应
{
int i = 0;
//char *str, strcp[60];
//之后的我自己另写了一个方法,给你作参考吧
char *str, *strcp;
int lengthS = strlen(s);
int lengthQ = strlen(q);//得到两个字符串的长度
strcp = new char[lengthS+lengthQ+1];//注意这个new完了不能delete,因为返回的是指针
for(int i=0;i {
strcp[i] = s[i];
}
for(int i=n;i{
strcp[i] = q[i];
}
for(int i=n+lengthQ;i{
strcp[i] = s[i-lengthQ];
}
strcp[lengthS+lengthQ+1] = '/0';

return strcp;
}

可能里面还有BUG,你再调试下看看。

回答2:

错误提示信息是什么,贴出来,代码大概看了一下str = strcp; 这句有什么意义吗,strcp也没有初始化

回答3:

insert(char *s, char *q, int i);
这个既然是个函数 请指定返回类型

回答4:

return str; //这里的str指向的是strcp[60] ,栈空间,函数返回后,栈空间释放,str里面的内容就不确定了。