#define PAGELEN 2
#define LINELEN 14
void do_more(FILE*);
int see_more();
int main(int ac,char av[])
{ FILE*fp;
if(ac==1)
do_more(stdin);
else if(ac==2)
if((fp=fopen(av[1],"r"))!=NULL)
{ do_more(fp);
fclose(fp);
}
else
exit(1);
return 0;
}
void do_more(FILE*fp)
{ char line[LINELEN];
int num_of_lines=0;
int see_more(),reply;
while(fgets(line,LINELEN,fp))
{if(num_of_lines==PAGELEN)
{reply=see_more;
if(reply==0)
break ;
num_of_lines-=reply;
}
if(fputs(line,stderr)==EOF)
exit(1);
num_of_lines++;
}
}
int see_more()
{ int c;
printf("\033[7m more?\033[m");
while((c=getchar())!=EOF)
{if(c=='q')
return 0;
if(c==' ')
return PAGELEN;
if(c=='\n')
return 1;
}
return 0;
}
这是一个简易的more命令程序 编译没错 但结果不是自己想要的 命令+文件 却没有输出 请问错在哪里了 谢谢
jagub 于 2009-06-11 08:36:39发表:
学习了
zhaoshuangyz 于 2009-06-10 11:55:30发表:
顶
deepwhite 于 2009-06-10 09:19:16发表:
输出用fputs输出到stderr也可以实现输出。
LZ将程序开始的av[]改成 *av[]或者 **av,然后再改掉程序中的N个小错误(或Warning)就可以了。
jagub 于 2009-06-09 20:26:34发表:
怎么找不到输出语句?
没有输出语句何来结果?
theset 于 2009-06-09 20:20:52发表:
我还看不懂勒