常小刚(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;
}
// 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,你再调试下看看。
提示返回错误:return str的返回类型不对(不能由char返回到int);
调用格式不对: str = insert(str, strin, i);什么什么的不对;
楼下说函数没有返回类型,这个真不知道给返回什么类型 。
这个既然是个函数 请指定返回类型