|
|

楼主 |
发表于 2006-9-5 16:47:29
|
显示全部楼层
谢谢斑竹指导,我把代码改了一下,结果可以运行了,虽然还是有其他的错误。
……
char buf[LINELEN];
……
这样就可以了,其实说白了还是我的C不过关,我根本没意识到我还没有分配空间给buf就开始用它了。
另外,斑竹你的头像和你的ID同时作用,恐怕很难让任何人在第一时间里做出正确的判断
……笑…
再试试看排版的效果
- #include <stdio.h>
- #include <stdlib.h>
- #define LINELEN 512
- #define PAGELEN 24
- void do_more(FILE *fp);
- int see_more();
- int main(int argc,char *argv[])
- {
- FILE *fp;
- if(argc == 1){
- printf("%s\n","Please DON'T make a joke!!");
- exit(1);
- }
- fp = fopen(*++argv,"r");
- if(ferror(fp))
- exit(1);
- do_more(fp);
- fclose(fp);
- return 0;
- }
复制代码
[php]
void do_more(FILE *fp)
{
char buf[LINELEN];
int reply;
int num_of_lines = 0;
while(fgets(buf,LINELEN,fp)){
if(num_of_lines < PAGELEN){
if(fputs(buf,stdout) == EOF)
num_of_lines++;
exit(1);
}
reply = see_more();
if(reply == 0)
exit(0);
else if(reply == 1)
num_of_lines--;
else if(reply == 2)
num_of_lines = 0;
}
}
int see_more()
{
int i;
char c;
printf("%s\n","more?[q,Space&Enter]");
c = getchar();
switch(c){
case 'q':return 0;
case ' ':return 1;
case '\n':return 2;
}
return 0;
}
[/php] |
|