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

常小刚(0533) 2011-07-06 17:33:59

// 076test.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include<conio.h>
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();
} insert(char *s, char *q, int n)
{
int i = 0;
char *str, strcp[60];
str = strcp; for (i = 0; *s != '\0'; i++)
{
if (i == n - 1)
{
for (; *q != '\0';)
{
str[i] = *q;
q++;
i++;
}
}
str[i] = *s;
s++;
}
str[i] = '\0';
return str;
}

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

// 076test.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include <stdio.h>
#include <string.h>
#include<conio.h>
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<n;i++)
{
strcp[i] = s[i];
}
for(int i=n;i<n+lengthQ;i++)
{
strcp[i] = q[i];
}
for(int i=n+lengthQ;i<lengthQ+lengthS;i++)
{
strcp[i] = s[i-lengthQ];
}
strcp[lengthS+lengthQ+1] = '/0';

return strcp;
}

可能里面还有BUG,你再调试下看看。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-06
错误提示信息是什么,贴出来,代码大概看了一下str = strcp; 这句有什么意义吗,strcp也没有初始化追问

提示返回错误:return str的返回类型不对(不能由char返回到int);
调用格式不对: str = insert(str, strin, i);什么什么的不对;
楼下说函数没有返回类型,这个真不知道给返回什么类型 。

第2个回答  2011-07-06
insert(char *s, char *q, int i);
这个既然是个函数 请指定返回类型
第3个回答  2011-07-06
return str; //这里的str指向的是strcp[60] ,栈空间,函数返回后,栈空间释放,str里面的内容就不确定了。

相关了解……

你可能感兴趣的内容

大家正在搜

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网