开发者社区> 问答> 正文

求助各位大神,是LINUX下关于tail实现的

#include
#include
#include
#include
#define MAXLINE 50
int cur_rec;
int cur_nums;
int file_fd = -1;
char buf[MAXLINE ];
void file_open1(char *);
char *file_next(void);
void file_close1(int);
void swift(char *);
int main(int argc,char *argv[])
{
int n=0;
char c,*p;
int i =0;
char tail[1024];
tail[0] = '\0';
if(argc != 2){
fprintf(stderr,"hey,br honst\n");
exit(1);
}
file_open1(argv[1]);
while(n <= 10){
p = file_next();
if(p == NULL)
break;
while((c = *--p) != '\0'){
if((tail[i++] = c)=='\n')
n++;
if(n > 10)
break;
}
}
file_close1(file_fd);
tail[i] = '\0';
swift[tail];
fprintf(stdout,"ok,although tough,i get it %s \n",tail);
return 0;
}
void file_open1(char *name)
{
file_fd = open(name,O_RDONLY);
cur_rec = cur_nums = 0;
}
char *file_next(void)
{
int reload();
char *p;
if(file_fd = -1)
return NULL;
if(cur_rec = 0 && reload() == 0)
return NULL;
p = &buf[cur_rec * MAXLINE];
cur_rec--;
return p;
}
int reload(void)
{
int amt_read;
lseek(file_fd,-NRECS*MAXLINE,SEEK_END);
amt_read = read(file_fd,buf,MAXLINE);
cur_rec = cur_nums =MAXLINE;
return cur_nums;
}
void file_close1(int fd)
{
if(fd != -1)
close(fd);
}
void swift(char * s)
{ 
int min = 0;
char c;
int max = sizeof(s);
while(min <= max){
c = s[min];
s[max] = c;
s[min] = s[max];
max--;
min++;
}
}

编译了说是swift[tail]中数组下标不是整数,搞了半天也没弄成,求解答,谢谢了

展开
收起
杨冬芳 2016-07-11 18:39:56 1994 0
1 条回答
写回答
取消 提交回答
  • 看起来你想要的是 swift(tail) 而不是 swift[tail]

    2019-07-17 19:54:36
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Alibaba Cloud Linux 3 发布 立即下载
ECS系统指南之Linux系统诊断 立即下载
ECS运维指南 之 Linux系统诊断 立即下载