求助:编译好的more命令怎么在linux上执行
发表于 : 2013-08-07 11:46
编译好的一个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
/* 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