以前逛兰大开源社区,看到一模仿Linux/Unix下tac命令的文章,感觉思路挺不错,代码实现如下:
/*
*First ,read one ,then push this line to the stack
*Then ,read the next line
*Until read to the end
*At last pop the data from stack
*/
#include <stdio.h>
#include <error.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/stat.h>
#define MAXLINE 8192
struct stacklink
{
char *linebuf;
struct stacklink *next;
};
struct stacklink *head;
//push the line data to the stack
void creatstack(struct stacklink * buf)
{
if(head->next==NULL){
head->next=buf;
buf->next=NULL;
}
else{
buf->next=head->next;
head->next=buf;
}
}
//pop the data ,and print the result
void tacshow()
{
struct stacklink *tmp;
tmp=head->next;
if(head->next!=NULL)
while(tmp!=NULL)
{
printf("%s",tmp->linebuf);
tmp=tmp->next;
}
}
int main(int argc,char *argv[])
{
FILE *fp;
struct stacklink *buf;
char ch,tmp_array[MAXLINE];
int i;
head=malloc(sizeof(struct stacklink));
size_t n;
/*
*this is only aupport one parameters
*It can easily support for more than one parameters
*Such as:
*put the below codes to "for" loop,and read the filename argv[i] will
*be ok!
*/
if(argc!=2)
{
perror("Please input the file's name\n");
}
if((fp=fopen(argv[1],"rb"))==NULL)
{
perror("open error\n");
}
buf=malloc(sizeof(struct stacklink));
buf->linebuf=NULL;
while((getline(&buf->linebuf,&n,fp))!=EOF){
creatstack(buf);
buf=malloc(sizeof(struct stacklink));
}
fclose(fp);
tacshow();
free(head);
free(buf);
return 0;
}
分享到:
相关推荐
【标题】"Linux基础课件Linux系统文件内容查看tac命令共9"主要涉及的是Linux操作系统中的一个基础命令——`tac`,它是用于查看和操作文件内容的工具。这个命令在Linux系统学习中是非常基础且实用的部分,尤其是在...
在Linux操作系统中,掌握基本的命令行工具是至关重要的,其中`tac`命令就是这样一个实用的工具。它主要用于反向显示文件的内容,这在处理大量数据或者需要从底部向上查看文件时非常有用。本课件将深入讲解`tac`命令...
tac命令就是将文件反向输出,刚好和cat输出相反。 语法格式:tac [参数] [文件] 常用参数: -b 在行前而非行尾添加分隔标志 -r 将分隔标志视作正则表达式来解析 -s 使用指定字符串代替换行作为分隔标志 ...
Linux中的`tac`命令是一个非常实用的工具,它在处理文本文件时提供了反向输出的功能。这个命令的名字`tac`实际上是`cat`的反向拼写,暗示了它的功能是反向显示文件内容。在本篇文章中,我们将深入探讨`tac`命令的...
tac命令用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示。 语法 tac(选项)(参数) 选项 -a或——append:将内容追加到文件的末尾; -i或——ignore-interrupts:忽略中断信号。 参数 文件列表:...
根据提供的文档内容,我们可以深入探讨TAC语言及其与SQL语言的结合使用,这对于理解南北7.0软件的核心功能至关重要。 ### TAC语言简介 TAC是南北7.0软件内置的一种开发语言,它具备强大的二次开发能力。TAC语言的...
"2G3G LAC与4G5G TAC的协同优化" 随着移动通信网络的发展,4G TAC 和 2G/3G LAC 的不一致及插花的问题日益突出,这些问题会导致移动终端跨 TAC 重选和切换次数增多,影响网络质量和用户体验。因此,需要开展 TAC/...
tac_plus的参考配置文件
tac_plus安装文件
tac 命令是 cat 命令的逆向版本,它可以从文件的最后一行开始显示内容。tac 命令的基本语法为:`tac [文件名]`。例如,`tac ~/.bashrc` 将从 `.bashrc` 文件的最后一行开始显示内容。 3. more 命令 more 命令可以...
5G基站间跨TAC切换失败案例分析 本资源摘要信息将对5G基站间跨TAC切换失败案例进行详细分析,探讨该问题的原因、解决方案和效果评估,并对类似案例提供解决方法和流程建议。 一、问题背景 随着5G网络的普及,基站...
### TAC Vista与TAC Xenta系统集成案例 #### 一、TAC Vista系统概述 - **定义与功能:**TAC Vista是一种高级楼宇自动化控制系统,用于管理和控制建筑内的各种系统,如暖通空调(HVAC)、照明和安防等。 - **特点:...
软件由几个主要部分组成,包括TAC Vista Server、TAC Vista Workstation、TAC Vista Webstation和TAC Vista ScreenMate等,它们共同构成了一个功能全面的系统,可实现对建筑物环境的综合管理。 2. TAC Vista Server...
Tacacs+服务器的配置文件通常位于/usr/local/etc/tac_plus.cfg。可以从源码包中复制配置文件,存放位置可以自定义。 2. 访问日志和记账日志 Tacacs+服务器需要配置访问日志和记账日志存放目录。可以使用mkdir命令...
手机 tac imei ,很多app借口需要imei参数,可用于生成imei
《DCCE-TAC6000、TAC3000、TAM4000设备设置软件详解》 在IT行业中,设备的配置与管理是至关重要的环节,特别是对于DCCE-TAC6000、TAC3000以及TAM4000这类高端的通信和网络设备。这些设备广泛应用于企业网络、数据...
### 使用Mapinfo 10.0的Voronoi功能创建TAC、LAC、BSC边界线 在无线网络优化领域,对特定区域内的基站进行有效的管理与分析至关重要。其中,利用地理信息系统(GIS)软件Mapinfo的强大功能,能够帮助我们高效地处理...