当前位置: 技术问答>linux和unix
《unix/linux编程实践教程》里的问题
来源: 互联网 发布时间:2016-11-13
本文导语: 在这本书的第一章,我像书上一样写了个more01.c的程序。运行得到more01可执行文件。但是在命令行输入 ($more more01.c)并没有内容出来。为什么啊?是不是要把more文件放到哪个目录下?还是说我写错了,小弟刚入linux...
在这本书的第一章,我像书上一样写了个more01.c的程序。运行得到more01可执行文件。但是在命令行输入
($more more01.c)并没有内容出来。为什么啊?是不是要把more文件放到哪个目录下?还是说我写错了,小弟刚入linux,有很多不懂的,望大侠们指教。
($more more01.c)并没有内容出来。为什么啊?是不是要把more文件放到哪个目录下?还是说我写错了,小弟刚入linux,有很多不懂的,望大侠们指教。
#include
#define PAGELEN 24
#define LINELEN 512
int see_more(FILE *fp){
int c;
printf("33[7m more? 33[m"); //这句那位大侠可以解释下
while(c=fgetc(fp)!=EOF){
if(c==' '){
return PAGELEN;
}
if(c=='n'){
return 1;
}
if(c=='q'){
return 0;
}
}
return 0;
}
void do_more(FILE *fp){
int line_num=0;
int reply;
char linech[LINELEN];
FILE *fp_tty;
fp_tty=fopen("/dev/tty","r");
if(fp_tty){
exit (1);
}
while(fgets(linech,LINELEN,fp)){
if(fputs(linech,stdout)==EOF){
exit(1);
}
line_num++;
if(line_num==PAGELEN){
reply=see_more(fp_tty);
if(reply==0){
break;
}
line_num-=reply;
}
}
}
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(0);
}
return 0;
}
|
if(fp=fopen(*++av,"r")!=NULL){改成if((fp=fopen(*++av,"r"))!=NULL){
while(c=fgetc(fp)!=EOF){ 改成 while((c=fgetc(fp))!=EOF){
if(fp_tty){ 改成if(fp_tty==NULL){
while(c=fgetc(fp)!=EOF){ 改成 while((c=fgetc(fp))!=EOF){
if(fp_tty){ 改成if(fp_tty==NULL){
|
你的执行程序的名字就是more ?
这个名字与系统的more命令重名了
看这一句,写错了吧
if(fp=fopen(*++av,"r")!=NULL){
是不是应该为if((fp=fopen(*++av,"r"))!=NULL){
这个名字与系统的more命令重名了
看这一句,写错了吧
if(fp=fopen(*++av,"r")!=NULL){
是不是应该为if((fp=fopen(*++av,"r"))!=NULL){