回 帖 发 新 帖 刷新版面

主题:求助一个二级C的上机题strfun函数应该如何修改才能实现要求呢

[b]磁盘上有一个名为test3-1.c的C程序文件,其函数strfun的功能是:在字符串中,删除以字符‘<’开始,字符‘>’结束的字符串内容(包括<>符号本身)。
例如,输入的字符串为:<html>This is a html page</html>,则输出结果为:This is a html page。
在main函数中,从文本文件test3-1.txt中读出一个字符串放入一维数组中,调用函数strfun删除以字符‘<’开始,字符‘>’结束的字符串内容,在主函数中输出删除后的结果。
请改正程序中的错误,使它能得出正确结果。
注意:不得增行或删行,也不得更改程序结构。
源程序如下:[/b]
[code=c]
#include  "stdio.h"
#include  "string.h"
void strfun(char  str, char start, char end)
{   char *pstart,*pend;
    while (str)
    {  if (*str=start)
        {
        pstart=str;
        pend=str+1;
        while (*pend!='\0' || *pend!=end)
                pend++;
            if (pend==end)
           while (*pstart++=*++pend);
        }
        str++;
    } 

void  main( )
 { char  string[81];
   FILE *fp;
    if((fp=fopen("test3-1.txt","r"))==NULL)
    {   printf("Cannot open the file.\n");
        exit(0);
    }
    fgets(string,81,fp);
    strfun(string,'<','>');
    puts(string);
}
[/code]

回复列表 (共1个回复)

沙发

void strfun(char  *str, char start, char end)
{   char *pstart,*pend;
    while (str)
    {  if (*str=start)
        {
        pstart=str;
        pend=str+1;
        while (*pend!='\0' || *pend!=end)
                pend++;
            if (*pend==end)
           while (*pstart++=*++pend);
        }
        str++;
    } 

我来回复

您尚未登录,请登录后再回复。点此登录或注册