`

CTDP linux 程序员手册 C和C++编程(11)Viewmod程序

阅读更多
大家可以通过这个例子体会linux的c编程。
#include <termios.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <dirent.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
#include <sys/signal.h>
#include <sys/types.h>
#include <sys/stat.h>
#define _POSIX_SOURCE 1 //POSIX 兼容源码
#define FALSE 0
#define TRUE 1
#define MAX_DEVICES 64
#define MAX_IDS 64
#define LINE_LENGTH 1128
FILE *output;
char input_fname[80]; //打印机的文件名称
FILE *input_file;
mode_t mode;
char Char; //用于单个char的处理
int display; //"-D" 项: 0-ASC,1-ASC/HEX, 2-Hex 3-dec 4-dec/asc 5-DOS text 6-UNIX text 7- strip all non-asc
int out_length;//-L 选项
int display_col; //显示列计数
int char_len;
int asc_char; //0-non-asc, 1-asc, 2-CR, 3-LF
int nospace;
int last_char; //最后一个 char的类型
int get_linestring(char *file_line, char *label_name, int qty_statements, int strno);
int freadln(FILE *handle,char *outputline);//从一个文件读一行
void Process_Bufchar(); //一次处理一个在缓存中的Char
main(int Parm_Count, char *Parms[])
{
 char message[90];
 int start_options, in_source, done;
 char *lastslash; //最后一个slash 的字符串地址
 char dirname[80]; //目录名称
 DIR *current_directory;
 int i;
 char In1, Key;
 char buf[255]; //数据缓存
 out_length = 80;
 display = 1;//缺省值 HEX/ASC 显示, 在CR, CR/LF, LF后断开
 start_options=0;
 in_source = 0; //缺省值,便准输出
 if (Parm_Count>1)//在程序名后面如果有参数
 {
 start_options = 1;
 strcpy(message,Parms[1]);
 if (message[0]!='-')//如果是一个输入文件的名称
 {
 if ((input_file = fopen(Parms[1], "rb")) == NULL)
 {
 fprintf(stderr,"%s: Unable to open the input file %s\n",Parms[0],Parms[1]);
 exit(1); //发生错误退出
 }
 else
 {
 in_source = 1;//file
 }
 }//end 如果是一个输入文件
 }//end在程序名后面如果有参数
 //获得参数
 if (start_options<Parm_Count)//如果开始选项存在
 {
 for (i=1; i<Parm_Count; i++)
 {
 strcpy(message, Parms[i]);
 if (message[0]=='-')
 {
 if ((message[1]=='D') || (message[1]=='d'))//if display option
 {
 if (message[2]=='0') display=0;
 if (message[2]=='1') display=1;
 if (message[2]=='2') display=2;
 if (message[2]=='3') display=3;
 if (message[2]=='4') display=4;
 if (message[2]=='5') display=5;
 if (message[2]=='6') display=6;
 if (message[2]=='7') display=7;
 }
 if ((message[1]=='L') || (message[1]=='l'))//如果有 length选项
 {
 out_length=atoi(&message[2]);
 }
 }
 }
 }//end如果开始选项存在
 done = 0;
 display_col=0;
 nospace = 1;//我们不需要space
 last_char=4;
 while (!done)
 {
 if (in_source==1) //从文件读一个字符
 {
 if ((Char=fgetc(input_file))==EOF)
  {
 done = 1;
 }
 }
 else //从标准输入读一个字符
 {
 Char=getchar();
 if (Char==EOF)
 {
 done = 1;
 }
 }
 if (done==0) //输出这个字符到标准输出
 {
 asc_char=0; //假设不是 asc 字符
 if ((Char>31) && (Char < 127)) asc_char = 1;
 if (Char==13) asc_char = 2;
 if (Char==10) asc_char = 3;
  switch (display)
 {
 case 0: //ASC
 if (asc_char < 2) char_len=1;
 else char_len=0;
 if (display_col+char_len>out_length)
 {
 putchar(10);//如果此行太长滚动
 display_col=0;
 }
 putchar(Char);
  display_col++;
 if (asc_char==3) display_col=0;
 break;
 case 1: //ASC/HEX
 default:
 if (asc_char==1) char_len=1;
 else char_len=2;
 if ((display_col==0) || (last_char==4) || ((last_char==1) && (asc_char==1)))nospace=1;//dont need space
 else nospace=0;
 if (nospace==0) char_len++;//如果我们需要一个 space
 if (display_col+char_len>out_length)
 {
 putchar(10);//如果此行太长滚动
 display_col=0;
 if (nospace==0)
 {
 nospace=1;
 char_len--;
 }
 }
 if (nospace==0)//加一个 space
 {
 putchar(' ');
 display_col++;
 }
 if (asc_char==1)
 {
 putchar(Char);
 display_col++;
 }
 else
 {
 sprintf(message,"%2x",Char);
 fputs(message,stdout);
 display_col +=2;
 if (asc_char==3)
 {
 putchar(10);
 display_col=0;
 }
 }
 if ((last_char==2) && (asc_char!=3))//如果有 CR 没有 LF
 {
 putchar(10);
 display_col=0;
 }

 last_char=asc_char;
 break;
 case 2: //hex
 char_len=2;
 if (display_col==0) nospace = 1;
 else nospace = 0;
 if (nospace == 0) char_len++; //如果我们需要一个 space
 if (display_col+char_len>out_length)
 {
 putchar(10);//如果此行太长滚动
 display_col=0;
 if (nospace==0)
 {
 nospace=1;
 char_len--;
 }
 }
 if (nospace==0)//添加space
 {
 putchar(' ');
 display_col++;
 }
 sprintf(message,"%2x",Char);
 fputs(message,stdout);
 display_col +=2;
 break;
 case 5: //unix 文本 – 调整dos文本,在所有LF加CR 
 if (Char==10) putchar(13);
 putchar(Char);
 break;
 case 6: //dos 文本 – 到 unix, 跳过所有CR
 if ((last_char==2) && (asc_char !=3))putchar(10); //if this char is not a LF and the last one was CR, need a line feed for unix
 if (Char!=13) putchar(Char);
 last_char=asc_char;
 break;
 case 3: //decimal
 char_len=3;
 if (display_col==0) nospace = 1;
 else nospace = 0;
 if (nospace == 0) char_len++; //如果我们需要一个 space
 if (display_col+char_len>out_length)
 {
 putchar(10);//如果此行太长滚动
 display_col=0;
 if (nospace==0)
 {
 nospace=1;
 char_len--;
 }
 }
 if (nospace==0)//添加一个 space
 {
 putchar(' ');
 display_col++;
 }
 sprintf(message,"%3d",Char);
 fputs(message,stdout);
 display_col +=2;
 break;
 case 4: //decimal asc
 if (asc_char==1) char_len=1;
 else char_len=3;
 if ((display_col==0) || (last_char==4) || ((last_char==1) && (asc_char==1)))nospace=1;//dont need space
 else nospace=0;
 if (nospace==0) char_len++;//如果我们需要一个space
 if (display_col+char_len>out_length)
 {
 putchar(10);//如果此行太长滚动
 display_col=0;
 if (nospace==0)
 {
 nospace=1;
 char_len--;
 }
 }
 if (nospace==0)//add a space
 {
 putchar(' ');
 display_col++;
 }
 if (asc_char==1)
 {
 putchar(Char);
 display_col++;
 }
 else
 {
 sprintf(message,"%3d",Char);
 fputs(message,stdout);
 display_col +=2;
 if (asc_char==3)
 {
 putchar(10);
 display_col=0;
 }
 }
 if ((last_char==2) && (asc_char!=3))//如果有 CR 没有 LF
 {
 putchar(10);
 display_col=0;
 }
 last_char=asc_char;
 break;
 case 7: //跳过所有得 non-asc 字符转到 Unix 文件 (除了ASC 和 LF)
 if ((asc_char==1) || (asc_char==3)) putchar(Char);
 break;
 }//end of switch display
 }//end of if not done
 }//end of while not done
}//end of main


  


  
分享到:
评论

相关推荐

    CTDP:中文文本数据处理

    Chinese-Text-Data-Processing ##一、当前功能 ...1、打开\CTDP\CTDP文件夹 2、在该目录下,运行命令 java -jar CTDP.jar -f lily 3、在目录中会生成output文件夹,输出结果将会保存在这个文件夹中

    型岩溶槽谷区降雨条件下地下河水质短时间尺度变化过程研究―――以重庆南山老龙洞地下河为例① (2012年)

    采用CTDP300多参数水质自动记录仪对重庆市南山老龙洞地下河出口处的地下水在降雨条件下水位、水温、pH值和电导率进行监测,以及2h时间间隔的地下水水化学指标(HCO3- ,Ca2+ ,Mg2+ ,NO3- ,PO34- ,SO24- , Fe2+ ,Mn2+ ,...

    川东槽谷区岩溶泉水物理化学动态特征及其环境效应研究———以重庆青木关岩溶槽谷姜家泉为例 (2009年)

    以重庆青木关岩溶槽谷姜家泉野外观测试验基地为例,利用CTDP300多参数水质自动记录仪、NITRATAXplussc在线硝氮分析仪及HOBO小型气象站,分别对岩溶泉在不同降雨条件下水化学的动态变化特征进行了监测研究。结果表明:...

    Unity Terrain Adjust

    核心特性:地形调整的灵活性 地形高度与坡度调整: 利用Terrain Adjust,设计师可以根据需要轻松调整地形的高度和坡度,创造出更加自然和真实的环境。 光滑边缘处理: 工具提供了边缘平滑功能,确保地形调整后的过渡自然,避免了突兀的高低变化。 自定义画笔设置: 可调整画笔大小、衰减、间距等参数,让设计师能够精确控制地形的每一个细节。 应用场景:多样化的地形创作 道路与岩石融合: 利用Terrain Adjust,可以将道路和岩石自然地混合到地形中,为游戏世界增添更多细节。 坡道创建: 工具还支持创建坡道,为游戏中的车辆或其他移动元素提供更加丰富的地形变化。 技术细节:轻量级与高效 编辑器专用: 作为编辑器的专用工具,Terrain Adjust不会对项目造成混乱,保持了工作环境的整洁。 Collider需求: 为了使用Terrain Adjust,目标对象需要有Collider组件,以确保地形调整的准确性。 Terrain Adjust工具以其轻量级设计和强大的地形调整功能,成为了Unity环境设计师的得力助手。它不仅提高了工作效率,还为创造更加丰富和真实的游戏世界提供了可能。

    基于 Shell 的驾照理论考试练习软件的设计与实现

    【作品名称】:基于 Shell 的驾照理论考试练习软件的设计与实现 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 测试题数据存储设计 # 测试题目文件夹 # 每个测试题作为一个目录,目录下面必须有 content.txt、options.txt 和 answer.txt 三个文件 # content.txt 文件内容为题目内容 # options.txt 文件内容为题目选项,每个选项占一行 # answer.txt 文件内容为正确答案 export tests_folder='./tests' 复习错题集自动删除答对的错题 export failed_list_file='failed.txt' # 错题集文件 sed -i '' "/$test/d" $failed_list_file

    PiP-Tool.msi

    PiP-Tool

    node-v0.10.42-sunos-x86.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    【毕业设计】YOLOv9 QT+NCNN实现安卓端部署源码+部署步骤+演示apk.zip

    高分毕业设计源码 基于YOLO的毕业选题设计的程序源码,适用与计算机与软件工程毕业设计选题

    node-v0.10.28-sunos-x86.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v0.10.19-x64.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v0.10.30-linux-x64.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    23230106孙悦1.doc

    23230106孙悦1.doc

    node-v0.12.12-darwin-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v0.10.2-sunos-x64.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v0.12.17-sunos-x86.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    西北工业大学数字逻辑实验三

    西北工业大学数字逻辑实验三

    JAVA物业管理系统设计与实现(LW+源代码).zip

    JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(LW+源代码)JAVA物业管理系统设计与实现(L

    node-v0.11.11-linux-x86.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    springboot299基于Java的家政服务平台的设计与实现.rar

    开发语言:java 框架:springboot,vue JDK版本:JDK1.8 数据库:mysql5.7+(推荐5.7,8.0也可以) 数据库工具:Navicat11+ 开发软件:idea/eclipse(推荐idea)

    【毕业设计】基于YOLOv9+Flask构建的目标检测Web应用+使用步骤.zip

    高分毕业设计源码 基于YOLO的毕业选题设计的程序源码,适用与计算机与软件工程毕业设计选题

Global site tag (gtag.js) - Google Analytics