(有点急)请帮忙修改下我编的一个字符串函数

来源:百度知道 编辑:UC知道 时间:2024/06/24 18:57:31
# include <stdio.h>
# include <string.h>
SubString(char *fan,char *a,int i,int m)
{
int j=0;
char *p;
p=a+i-1;
*(p+m)='#';
while(*(p+j)!='#')
{
*(fan+j)=*(p+j);
j++;
}
*(fan+j)='\0';
return *fan;
}
main()
{
char a[10]={'a','b','c','d','e','f','g','h','i','j'};
int w,r;
while(1)
{
char fan[4];
printf("请输入要输出的首字符位置与输出字符的个数\n");
scanf("%d%d",&w,&r);
SubString(fan,a,w,r);
printf("%s\n",&fan);
}
}

这个函数想要实现的是在一个字符串的指定位置取n个连续的字符,比如在取字符串a[10]的第4个字符开始的3个字符,这个函数要是只调用一次结果是正确的,但是要在一个程序中调用多次的话就会出错,请帮忙修改一下下,使之能在程序中无论调用多少次都能出正确的结果,或者请把能实现这个功能的函数发上来,万分感谢!!

# include <stdio.h>
# include <string.h>

void SubString(char *fan,char *a,int i,int m)
{
int j=0;
char *p;
p=a+i-1;
while(*(fan+j)!='\0')
{
printf("\n");
*(fan+j)=*(p+j);
j++;
}
fan[m]='\0';
}
void main()
{
char a[11]={'a','b','c','d','e','f','g','h','i','j','\0'};
int w,r;
while(1)
{
char fan[4];
printf("请输入要输出的首字符位置与输出字符的个数\n");
scanf("%d %d",&w,&r);
SubString(fan,a,w,r);
printf("%s\n",fan);
}
}

错误处如下:
1.函数没有声明返回类型
2.a 没有结束符
3.*(p+m)='#';
while(*(p+j)!='#')
这里改变了原数组