引言 Turbo C提供了丰富的库函数设计程序时可以灵活 运用它们实现所需的功能在C语言程序设计过程中 经常需要对文件进行数据读写等操作使用C语言提供 的文件处理库函数时将部分文件处理函数结合实际应 用编写基于C语言的灵活显示文件内容的程序此程 序运行不同结果的界面分别见图1和图2下面详细介 绍该程序中主要功能的实现过程并对相关库函数的功用 进行详细说明.. ![]() ![]() 1.1 支持通配符 程序可以根据用户输入的文件名文件名中可含盘 符路径通配符?和*等自动在指定或默认目录下 搜索满足条件的文件并依次将它们读入内存在屏幕上 逐个显示文件内容其功能代码如下 l1=findfirstargv1&f0 ifl1<0printf"文件名输入错磁盘上无此文件. \n" while!l1 l1=findnext&f 文件名的输入可以在执行程序命令行中给定如果命 令行中忘记带文件名程序运行时可以判断出用户遗漏了 文件名并通过屏幕信息提示用户输入文件名其功能代 码如下 ifarrgc<2 printf"\n请输入文件名" scanf"%s"argv1 ch2=getchar 1.2 支持分屏显示 程序显示满足条件文件的第一屏内容后屏幕下出现 提示信息供用户选择显示不同屏的信息其功能代码如 下 if++k2>=20 k2=0 printf" n输入命令PgUp前一页F文件头E 下一个文件Esc到DOS其它键下一页." ch2=bioskey0 1.3 可区分文本文件和非文本文件 程序可以通过判断文件类型将文件读写指针正确定 位到文件内容开始位置确保显示的是文件内容如果文 件为文本文件则将文件的读写指针移到从文件头开始偏 移地址1024的位置即文本文件内容开始存放的位置 否则文件读写指针位置不变其功能代码如下ifgetc fp==0x01&&getcfp==0xff fseekfp1024L0 ll0=ftellfp ch1='y' else fseekfp0L0 1.4 杜绝了汉字显示时的断字 通过判断用双字节其机内码均大于A0H表示的汉 字的前一字节的显示位置使其不显示在屏幕的最后一列 的方法来解决汉字显示时产生断字问题其功能代码如 下 ifch>=0xa0 if++i1==1 ifi>=79 printf"\n%c"chi=1continue else i1=0 为了避免程序显示中文文件时将中文文件中的控制 符互相组合成非法汉字或控制与汉字符误组合成非法汉 字造成文件内容的混乱程序取文件内容显示时都会判 断所取信息是不是字型控制符ASCII码大于7FH小于 A0H分页符ASCII码为0C0AH或软硬回车符ASCII 码分别为8D8AH和0D0AH等并根据判断结果执行不 同的处理代码从而过滤掉文件中的控制符 1.5 可显示文件部分内容 程序允许用户根据需要指定需显示的文件内容的行 数实现显示部分文件内容的功能若用户指定行数小于 屏幕允许的行数则直接显示完满足条件的文件内容否则会暂停等待用户的翻屏否的指令其功能代码如下 ifargc==3p1=atoiargv2 else p1=1000 k1=0 if++k1>=p1k2=0fseekfp0L2 2 程序中部分库函数功能分析 本程序实现某些功能时用到Turbo C提供的相关库 函数下面将对程序中所涉及的库函数进行详细说明 2.1 findfirst 其函数原型为int findfirstconst char*pathname struct ffblk*ffblkint attrib |