Chinaunix
标题:
《Unix/Linux编程实践教程》教材中问题。。
[打印本页]
作者:
sz6180
时间:
2011-05-16 17:45
标题:
《Unix/Linux编程实践教程》教材中问题。。
本帖最后由 sz6180 于 2011-05-16 20:06 编辑
/* more01.c - version 0.1 of more
* read and print 24 lines then pause for a few special commands
*/
#include <stdio.h>
#define PAGELEN 24
#define LINELEN 512
void do_more(FILE *);
int see_more();
int main( int ac , char *av[] )
{
FILE *fp;
if ( ac == 1 )
do_more( stdin );
else
while ( --ac )
if ( (fp = fopen( *++av , "r" )) != NULL )
{
do_more( fp ) ;
fclose( fp );
}
else
exit(1);
return 0;
}
void do_more( FILE *fp )
/*
* read PAGELEN lines, then call see_more() for further instructions
*/
{
char line[LINELEN];
int num_of_lines = 0;
int see_more(), reply;
while ( fgets( line, LINELEN, fp ) ){ /* more input */
if ( num_of_lines == PAGELEN ) { /* full screen? */
reply = see_more(); /* y: ask user */
if ( reply == 0 ) /* n: done */
break;
num_of_lines -= reply; /* reset count */
}
if ( fputs( line, stdout ) == EOF ) /* show line */
exit(1); /* or die */
num_of_lines++; /* count it */
}
}
int see_more()
/*
* print message, wait for response, return # of lines to advance
* q means no, space means yes, CR means one line
*/
{
int c;
printf("\033[7m more? \033[m"); /* reverse on a vt100 */
while( (c=getchar()) != EOF ) /* get response */
{
if ( c == 'q' ) /* q -> N */
return 0;
if ( c == ' ' ) /* ' ' => next page */
return PAGELEN; /* how many to show */
if ( c == '\n' ) /* Enter key => 1 line */
return 1;
}
return 0;
}
复制代码
在这本书的第一章,我像书上一样写了个more01.c的程序。运行得到more01可执行文件。但是在命令行输入
($more01 more01.c)并没有内容出来。为什么啊?是不是要把more文件放到哪个目录下?还是说我写错了,小弟刚入linux,有很多不懂的,望大侠们指教。
作者:
whaaat
时间:
2011-05-16 18:10
more more01.c有没有错误提示?
作者:
sz6180
时间:
2011-05-16 20:07
more more01.c有没有错误提示?
whaaat 发表于 2011-05-16 18:10
是more01 more01.c
作者:
whaaat
时间:
2011-05-16 20:27
回复
3#
sz6180
搞错了。那你more01 more01.c有什么错误提示?./more01 more01.c试试呢?
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2