C语言编程请教:编写一个程序,

来源:百度知道 编辑:UC知道 时间:2024/05/11 01:58:49
要求是:输入一个字符串后再输入2个字符,输出此字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。用返回字符指针的函数实现。
例:(括号内为说明)
输入
program
r
g
输出
rog

已经知道的语句有:#include <stdio.h>
char newstr[80];
void main()
{
char str[80],c_begin,c_end;
char *fun(char *p,char c_begin,char c_end);

scanf("%s",str);
getchar();
c_begin=getchar();
getchar();
c_end=getchar();
puts(fun(str,c_begin,c_end));
}
我自己写的函数是:char *fun(char *p,char c_begin,char c_end)
{
int i,n1,n2;
char str[80],str2;
for(i=0;*p!='\0';i++){
if(*p==c_begin){
n1=0;str2=p[n1];strcat(str,str2);
n1++;
}
else if(*p==c_end){
str2=p[n1];strcat(str,str2);break;
}
}
printf("%s",str);
p=str;
printf("%s",p);
}

请各位好心人帮忙看一下哪里除了问题。谢谢!指针我是真的有点搞不明白!

char *fun(char *p,char c_begin,char c_end)
{
int i,n1=-1,n2;
char str[80],str2;
for(i=0;p[i]!='\0';i++){//修改*p为p[i]让判断可以正确的扫描字符串
if(p[i]==c_begin){//修改*p为p[i]让判断可以正确的扫描字符串
n1=i; //记录起始位置
}
else if(p[i]==c_end){ //修改*p为p[i]让判断可以正确的扫描字符串
str2=p[i];strcat(str,str2);break;
}
else if(n1!=-1){//n1不等于-1的话,说明已经找到了起始点,将这个条件放在第三位是因为如果p[i]==c_end的话可以正常的终止循环
str2=p[i];strcat(str,str2);//将i位置的字符加入str中
}
}
printf("%s",str);
p=str;
printf("%s",p);
return str;
}
或者
char *fun(char *p,char c_begin,char c_end)
{
int i,n1=-1,n2==-1;
char str[80],str2;
for(i=0;p[i]!='\0';i++){
if(p[i]==c_begin){ //检查字符串p的第i个字符是否等于c_begin
if(n1==-1)n1=i; //这个判断保证n1是c_begin第一次出现的位置
}
else if(p[i]==c_end){ //检查字符串p的第i个字符是否等于c_end
n2=i;break;
}
}
for(i=0;i<n1-n2;i++){//通过循环将p中处于n1与n2之间的字符写入