分页: 1 / 1

求助:编译好的more命令怎么在linux上执行

发表于 : 2013-08-07 11:46
kobemiller
编译好的一个more命令,但是不知道怎么在linux上实现我编的命令,望解答:
/* more01.c - version 0.1 of more
* read and print 24 lines then pause for a few special commands
*/
#include <stdio.h>
#include <stdlib.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 line, then call see_more() for further instructions
*/
{
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, stdout ) == EOF )
exit(1);
num_of_lines++;
}
}
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");
while ( (c = getchar() ) != EOF )
{
if ( c == 'q') return 0;
if ( c == ' ') return PAGELEN;
if ( c == ' \n') return 1;
}
return 0;
}
按照书上的提示是:
cc more01.c -o more01
more01 more01.c
这个我试过了,不行
网上还有种说法是:
cd 到当前目录
./more01
这个我也试了,还是不行
这是我在终端上输入的情况:
root@ubuntu:~/Desktop# gcc linux_more_1.c -o linux_more_1
linux_more_1.c: In function ‘see_more’:
linux_more_1.c:64:13: warning: multi-character character constant [-Wmultichar]
root@ubuntu:~/Desktop# ./linux_more_1
z^Z
[1]+ Stopped ./linux_more_1
root@ubuntu:~/Desktop# linux_more_1 linux_more_1.c
linux_more_1: command not found
root@ubuntu:~/Desktop# ./linux_more_1
linux_more_1 linux_more_1.c
linux_more_1 linux_more_1.c

Re: 求助:编译好的more命令怎么在linux上执行

发表于 : 2013-08-07 12:11
zhw2101024
想知道是哪一年的哪本书上的例子?

Re: 求助:编译好的more命令怎么在linux上执行

发表于 : 2013-08-07 12:18
YeLee
[diff]
--- a/more.c.
+++ b/more.c
@@ -61,7 +61,7 @@
{
if ( c == 'q') return 0;
if ( c == ' ') return PAGELEN;
- if ( c == ' \n') return 1;
+ if ( c == '\n') return 1;
}
return 0;
}
[/diff]
警告先检查一下。 :em01 :em01 :em01

Re: 求助:编译好的more命令怎么在linux上执行

发表于 : 2013-08-07 12:23
YeLee
至于怎么使用,那不都是用户的事情吗?开发者这不是自己都有代码了吗? :em20