您的位置:

c语言查找之前使用的命令,c语言查找之前使用的命令是

本文目录一览:

请问如何用c语言实现遍历查找磁盘下的exe文件? 我是在VC6.0平台下

调用DOS 命令 dir 就可以了。

如果只要显示文件名,加 选项 /B

如果要显示所有子文件夹里的文件名, 加 选项 /S

例如 DIR C:\*.exe /B /S

如果要把显示 转向到文件 DIR C:\*.exe /B /S abc.lis

DOS 命令 可以用 sprintf 做成,用 system() 让它执行。

程序如下:

#include stdio.h

#include stdlib.h

main(){

char cmd[80];

char d;

for (d='C';d='Z';d++) // 对 磁盘号 C: D: E: .....Z: 循环

{

sprintf(cmd,"DIR %c:\\*.exe /B",d); // 命令

// printf("%s\n",cmd); // 检查 命令字符串 是否正确

system(cmd); // 执行

}

return 0;

}

c语言命令行在一个文件中查找另一个文件指定的内容

f=fopen("filter.txt","r");

f1=fopen("serieA.txt","r");

while (fgets(line,50,f)!=NULL)

{

while (fgets(line,50,f1)!=NULL)

if(strcmp(nameF,nameS)==0).....

rewind(f1);

}

c语言中预处理命令都有哪些?

C语言的预处理主要有三个方面的内容: 1.宏定义; 2.文件包含; 3.条件编译。

预处理命令以符号“#”开头。

宏定义命令:#define、#undef,用来定义和解除宏。(值得注意的是还可以定义带参数的宏)

文件包含命令:#include "文件名" 或者 #include 文件名。使用前者时会优先从当前目录查找头文件,使用后者时优先从默认的系统目录查找。

条件编译:#ifdef、#else、#endif、#elif 等。出于程序兼容性的考虑,有些语句希望在条件满足时才编译。这时候会用到条件编译的命令。

如何用c语言进行编辑运行和保存用那几个命令

TC2.0

(1)、File(文件)菜单

按Alt+F可进入File菜单, 该菜单包括以下内容:

.Load(加载)

装入一个文件, 可用类似DOS的通配符(如*.C)来进行列表选择。也可装入其它

扩展名的文件, 只要给出文件名(或只给路径)即可。该项的热键为F3, 即只要在主

菜单中按F3即可进入该项, 而不需要先进入File菜单再选此项。

.Pick(选择)

将最近装入编辑窗口的8个文件列成一个表让用户选择, 选择后将该程序装入

编辑区, 并将光标置在上次修改过的地方。其热健为Alt-F3。

.New(新文件)

说明文件是新的, 缺省文件名为NONAME.C, 存盘时可改名。

.Save(存盘)

将编辑区中的文件存盘, 若文件名是NONAME.C时, 将询问是否更改文件名, 其

热键为F2。

(2)、Edit(编辑)菜单

按Alt+E可进入编辑菜单, 若再回车, 则光标出现在编辑窗口, 此时用户可以

进行文本编辑。

(3)Run(运行)菜单

按Alt+R可进入Run菜单, 该菜单有以下各项:

.Run(运行程序)

运行由Project/Project name项指定的文件名或当前编辑区的文件。如果对上

次编译后的源代码未做过修改, 则直接运行到下一个断点(没有断点则运行到结束)。

否则先进行编译、连接后才运行, 其热键为Ctrl+F9。

(4)、Compile(编译)菜单

按Alt+C可进入Compile菜单, 该菜单有以下几个内容:

.Compile to OBJ(编译生成目标码)

将一个C源文件编译生成.OBJ目标文件, 同时显示生成的文件名。其热键为

Alt+F9。

具体见这篇文章

Turbo C 2.0集成开发环境的使用

进入Turbo C 2.0集成开发环境中后, 屏幕上显示:

——————————————————————————————

File Edit Run Compile Project Options Debug Break/watch

┌————————————Edit——————————————┐

│ Line 1 Col 1 Insert Indent Tab File Unindent c:NONAME.C│

│ │

│ │

│ │

│ │

│ │

│ │

│ │

│—————————Message——————————————— │

│ │

│ │

└————————————————————————————┘

F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu

———————————————————————————————

其中顶上一行为Turbo C 2.0 主菜单, 中间窗口为编辑区, 接下来是信息窗

口, 最底下一行为参考行。这四个窗口构成了Turbo C 2.0的主屏幕, 以后的编程、

编译、调试以及运行都将在这个主屏幕中进行。下面详细介绍主菜单的内容。

1 主菜单

主菜单 在Turbo C 2.0主屏幕顶上一行, 显示下列内容:

File Edit Run Compile Project Options Debug Break/watch

除Edit外, 其它各项均有子菜单, 只要用Alt加上某项中第一个字母(即大写字

母), 就可进入该项的子菜单中。

(1)、File(文件)菜单

按Alt+F可进入File菜单, 该菜单包括以下内容:

.Load(加载)

装入一个文件, 可用类似DOS的通配符(如*.C)来进行列表选择。也可装入其它

扩展名的文件, 只要给出文件名(或只给路径)即可。该项的热键为F3, 即只要在主

菜单中按F3即可进入该项, 而不需要先进入File菜单再选此项。

.Pick(选择)

将最近装入编辑窗口的8个文件列成一个表让用户选择, 选择后将该程序装入

编辑区, 并将光标置在上次修改过的地方。其热健为Alt-F3。

.New(新文件)

说明文件是新的, 缺省文件名为NONAME.C, 存盘时可改名。

.Save(存盘)

将编辑区中的文件存盘, 若文件名是NONAME.C时, 将询问是否更改文件名, 其

热键为F2。

.Write to(存盘)

可由用户给出文件名将编辑区中的文件存盘, 若该文件已存在, 则询问要不要

覆盖。

.Directory(目录)

显示目录及目录中的文件, 并可由用户选择。

.Change dir(改变目录)

显示当前目录, 用户可以改变显示的目录。

.Os shell(暂时退出)

暂时退出Turbo C 2.0到DOS提示符下, 此时可以运行DOS 命令, 若想回到

Turbo C 2.0中, 只要在DOS状态下键入EXIT即可。

.Quit(退出)

退出Turbo C 2.0, 返回到DOS操作系统中, 其热键为Alt+X。

说明:

以上各项可用光标键移动色棒进行选择, 回车则执行。也可用每一项的第一个

大写字母直接选择。若要退到主菜单或从它的下一级菜单列表框退回均可用Esc键,

Turbo C 2.0所有菜单均采用这种方法进行操作, 以下不再说明。

(2)、Edit(编辑)菜单

按Alt+E可进入编辑菜单, 若再回车, 则光标出现在编辑窗口, 此时用户可以

进行文本编辑。

编辑方法基本与wordstar相同, 可用F1键获得有关编辑方法的帮助信息。

与编辑有关的功能键如下:

F1 获得Turbo C 2.0编辑命令的帮助信息

F5 扩大编辑窗口到整个屏幕

F6 在编辑窗口与信息窗口之间进行切换

F10 从编辑窗口转到主菜单

编辑命令简介:

PageUp 向前翻页

PageDn 向后翻页

Home 将光标移到所在行的开始

End 将光标移到所在行的结尾

Ctrl+Y 删除光标所在的一行

Ctrl+T 删除光标所在处的一个词

Ctrl+KB 设置块开始

Ctrl+KK 设置块结尾

Ctrl+KV 块移动

Ctrl+KC 块拷贝

Ctrl+KY 块删除

Ctrl+KR 读文件

Ctrl+KW 存文件

Ctrl+KP 块文件打印

Ctrl+F1 如果光标所在处为Turbo C 2.0库函数, 则获得有关该函数的帮助

信息

Ctrl+Q[ 查找Turbo C 2.0双界符的后匹配符

Ctrl+Q] 查找Turbo C 2.0双界符的前匹配符

说明:

a. Turbo C 2.0的双界符包括以下几种符号:

花括符 {和}

尖括符 和

圆括符 (和)

方括符 [和]

注释符 /*和*/

双引号 "

单引号 '

b. Turbo C 2.0在编辑文件时还有一种功能, 就是能够自动缩进, 即光标定位

和上一个非空字符对齐。在编辑窗口中, Ctrl+OL为自动缩进开关的控制键。

(3)Run(运行)菜单

按Alt+R可进入Run菜单, 该菜单有以下各项:

.Run(运行程序)

运行由Project/Project name项指定的文件名或当前编辑区的文件。如果对上

次编译后的源代码未做过修改, 则直接运行到下一个断点(没有断点则运行到结束)。

否则先进行编译、连接后才运行, 其热键为Ctrl+F9。

.Program reset(程序重启)

中止当前的调试, 释放分给程序的空间, 其热键为Ctrl+F2。

.Go to cursor(运行到光标处)

调试程序时使用, 选择该项可使程序运行到光标所在行。光标所在行必须为一

条可执行语句, 否则提示错误。其热键为F4。

.Trace into(跟踪进入)

在执行一条调用其它用户定义的子函数时, 若用Trace into项, 则执行长条将

跟踪到该子函数内部去执行, 其热键为F7。

.Step over(单步执行)

执行当前函数的下一条语句, 即使用户函数调用, 执行长条也不会跟踪进函数

内部, 其热键为F8。

.User screen(用户屏幕)

显示程序运行时在屏幕上显示的结果。其热键为Alt+F5。

(4)、Compile(编译)菜单

按Alt+C可进入Compile菜单, 该菜单有以下几个内容:

.Compile to OBJ(编译生成目标码)

将一个C源文件编译生成.OBJ目标文件, 同时显示生成的文件名。其热键为

Alt+F9。

.Make EXE file(生成执行文件)

此命令生成一个.EXE的文件, 并显示生成的.EXE文件名。其中.EXE文件名是下

面几项之一。

a. 由Project/Project name说明的项目文件名。

b. 若没有项目文件名, 则由Primary C file说明的源文件。

c. 若以上两项都没有文件名, 则为当前窗口的文件名。

.Link EXE file(连接生成执行文件)

把当前.OBJ文件及库文件连接在一起生成.EXE文件。

.Build all(建立所有文件)

重新编译项目里的所有文件, 并进行装配生成.EXE文件。该命令不作过时检查

(上面的几条命令要作过时检查, 即如果目前项目里源文件的日期和时间与目标文

件相同或更早, 则拒绝对源文件进行编译)。

.Primary C file(主C文件)

当在该项中指定了主文件后, 在以后的编译中, 如没有项目文件名则编译此项

中规定的主C文件, 如果编译中有错误, 则将此文件调入编辑窗口, 不管目前窗口

中是不是主C文件。

.Get info(获得有关当前路径、源文件名、源文件字节大小、编译中的错误数

目、可用空间等信息。

(5)、Project(项目)菜单

按Alt+P可进入Project菜单, 该菜单包括以下内容:

.Project name(项目名)

项目名具有.PRJ的扩展名, 其中包括将要编译、连接的文件名。例如有一个程

序由file1.c, file2.c, file3.c组成, 要将这3个文件编译装配成一个file.exe的

执行文件, 可以先建立一个file.prj的项目文件, 其内容如下:

file1.c

file2.c

file3.c

此时将file.prj放入Project name项中, 以后进行编译时将自动对项目文件中

规定的三个源文件分别进行编译。然后连接成file.exe文件。

如果其中有些文件已经编译成.OBJ文件, 而又没有修改过, 可直接写上.OBJ扩

展名。此时将不再编译而只进行连接。

例如: file1.obj

file2.c

file3.c

将不对file1.c进行编译, 而直接连接。

说明:

当项目文件中的每个文件无扩展名时, 均按源文件对待, 另外, 其中的文件也

可以是库文件, 但必须写上扩展名.LIB。

.Break make on(中止编译)

由用户选择是否在有Warining(警告)、Errors(错误)、Fatal Errors( 致命错

误)时或Link(连接)之前退出Make编译。

.Auto dependencies(自动依赖)

当开关置为on, 编译时将检查源文件与对应的.OBJ文件日期和时间, 否则不进

行检查。

.Clear project(清除项目文件)

清除Project/Project name中的项目文件名。

.Remove messages(删除信息)

把错误信息从信息窗口中清除掉。

(6)、Options(选择菜单)

按Alt+O可进入Options菜单, 该菜单对初学者来说要谨慎使用。

.Compiler(编译器)

本项选择又有许多子菜单, 可以让用户选择硬件配置、存储模型、调试技术、

代码优化、对话信息控制和宏定义。这些子菜单如下:

Model

共有Tiny, small, medium, compact, large, huge 六种不同模式可由同户选

择。

Define

打开一个宏定义框, 同户可输入宏定义。多重定义可同分号, 赋值可用等号。

Code generation

它又有许多任选项, 这些任选项告诉编译器产生什么样的目标代码。

Calling convention 可选择C或Pascal方式传递参数。

Instruction set 可选择8088/8086或80186/80286指令系列。

Floating point 可选择仿真浮点、数学协处理器浮点或无浮点运算。

Default char type 规定char的类型。

Alignonent 规定地址对准原则。

Merge duplicate strings 作优化用, 将重复的字符串合并在一起。

Standard stack frame 产生一个标准的栈结构。

Test stack overflow 产生一段程序运行时检测堆栈溢出的代码。

Line number 在.OBJ文件中放进行号以供调试时用。

OBJ debug information 在.OBJ文件中产生调试信息。

Optimization

Optimize for 选择是对程序小型化还是对程序速度进行优

化处理。

Use register variable 用来选择是否允许使用寄存器变量。

Register optimization 尽可能使用寄存器变量以减少过多的取数操

作。

Jump optimization 通过去除多余的跳转和调整循环与开关语句

的办法, 压缩代码。

Source

Indentifier length 说明标识符有效字符的个数, 默认为32个。

Nested comments 是否允许嵌套注释。

ANSI keywords only 是只允许ANSI关键字还是也允许Turbo C

2.0关键字

Error

Error stop after 多少个错误时停止编译, 默认为25个。

Warning stop after 多少个警告错误时停止编译, 默认为100个。

Display warning

Portability warning 移植性警告错误。

ANSI Violations 侵犯了ANSI关键字的警告错误。

Common error 常见的警告错误。

Less common error 少见的警告错误。

Names 用于改变段(segment)、 组( group) 和类

(class)的名字, 默认值为CODE,DATA,BSS。

.Linker(连接器)

本菜单设置有关连接的选择项, 它有以下内容:

Map file menu 选择是否产生.MAP文件。

Initialize segments 是否在连接时初始化没有初始化的段。

Devault libraries 是否在连接其它编译程序产生的目标文件时去寻

找其缺省库。

Graphics library 是否连接graphics库中的函数。

Warn duplicate symbols 当有重复符号时产生警告信息。

Stack warinig 是否让连接程序产生No stack的警告信息。

Case-sensitive link 是否区分大、小写字。

.Environment(环境)

本菜单规定是否对某些文件自动存盘及制表键和屏幕大小的设置

Message tracking

Current file 跟踪在编辑窗口中的文件错误。

All files 跟踪所有文件错误。

Off 不跟踪。

Keep message 编译前是否清除Message窗口中的信息。

Config auto save 选on时, 在Run, Shell或退出集成开发环境之前,

如果Turbo C 2.0的配置被改过, 则所做的改动

将存入配置文件中。选off时不存。

Edit auto save 是否在Run或Shell之前, 自动存储编辑的源文件。

Backup file 是否在源文件存盘时产生后备文件(.BAK文件)。

Tab size 设置制表键大小, 默认为8。

Zoomed windows 将现行活动窗口放大到整个屏幕, 其热键为F5。

Screen size 设置屏幕文本大小。

.Directories(路径)

规定编译、连接所需文件的路径, 有下列各项:

Include directories 包含文件的路径, 多个子目录用";"分开。

Library directories 库文件路径, 多个子目录用";"分开。

Output directoried 输出文件(.OBJ, .EXE, .MAP文件)的目录。

Turbo C directoried Turbo C 所在的目录。

Pick file name 定义加载的pick文件名, 如不定义则从current

pick file中取。

.Arguments(命令行参数)

允许用户使用命令行参数。

.Save options(存储配置)

保存所有选择的编译、连接、调试和项目到配置文件中, 缺省的配置文件为

TCCONFIG.TC。

.Retrive options

装入一个配置文件到TC中, TC将使用该文件的选择项。

(7)、Debug(调试)菜单

按Alt+D可选择Debug菜单, 该菜单主要用于查错, 它包括以下内容:

Evaluate

Expression 要计算结果的表达式。

Result 显示表达式的计算结果。

New value 赋给新值。

Call stack 该项不可接触。而在Turbo C debuger 时用于检

查堆栈情况。

Find function 在运行Turbo C debugger时用于显示规定的函数。

Refresh display 如果编辑窗口偶然被用户窗口重写了可用此恢复

编辑窗口的内容。

(8)、Break/watch(断点及监视表达式)

按Alt+B可进入Break/watch菜单, 该菜单有以下内容:

Add watch 向监视窗口插入一监视表达式。

Delete watch 从监视窗口中删除当前的监视表达式。

Edit watch 在监视窗口中编辑一个监视表达式。

Remove all watches 从监视窗口中删除所有的监视表达式。

Toggle breakpoint 对光标所在的行设置或清除断点。

Clear all breakpoints 清除所有断点。

View next breakpoint 将光标移动到下一个断点处。

VC之类的IDE就简单多了。

VC compiler ctrl + F7

build F7

buildexecute ctrl + F5

怎么对C语言中的文件进行内容添加,删除,查找的操作?

c语言文件操作

13.3 文件的打开与关闭

文件在进行读写操作之前要先打开,使用完毕要关闭。所谓打开文件,实际上是建立文件的各种有关信息,并使文件指针指向该文件,以便进行其它操作。关闭文件则断开指针与文件之间的联系,也就禁止再对该文件进行操作。

在C语言中,文件操作都是由库函数来完成的。在本章内将介绍主要的文件操作函数。

13.3.1 文件的打开(fopen函数)

fopen函数用来打开一个文件,其调用的一般形式为:

文件指针名=fopen(文件名,使用文件方式);

其中,

“文件指针名”必须是被说明为FILE 类型的指针变量;

“文件名”是被打开文件的文件名;

“使用文件方式”是指文件的类型和操作要求。

“文件名”是字符串常量或字符串数组。

例如:

FILE *fp;

fp=("file a","r");

其意义是在当前目录下打开文件file a,只允许进行“读”操作,并使fp指向该文件。

又如:

FILE *fphzk

fphzk=("c:\\hzk16","rb")

其意义是打开C驱动器磁盘的根目录下的文件hzk16,这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“\\ ”中的第一个表示转义字符,第二个表示根目录。

使用文件的方式共有12种,下面给出了它们的符号和意义。

文件使用方式

意义

“rt”

只读打开一个文本文件,只允许读数据

“wt”

只写打开或建立一个文本文件,只允许写数据

“at”

追加打开一个文本文件,并在文件末尾写数据

“rb”

只读打开一个二进制文件,只允许读数据

“wb”

只写打开或建立一个二进制文件,只允许写数据

“ab”

追加打开一个二进制文件,并在文件末尾写数据

“rt+”

读写打开一个文本文件,允许读和写

“wt+”

读写打开或建立一个文本文件,允许读写

“at+”

读写打开一个文本文件,允许读,或在文件末追加数据

“rb+”

读写打开一个二进制文件,允许读和写

“wb+”

读写打开或建立一个二进制文件,允许读和写

“ab+”

读写打开一个二进制文件,允许读,或在文件末追加数据

对于文件使用方式有以下几点说明:

1) 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:

r(read): 读

w(write): 写

a(append): 追加

t(text): 文本文件,可省略不写

b(banary): 二进制文件

+: 读和写

2) 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。

3) 用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。

4) 若要向一个已存在的文件追加新的信息,只能用“a”方式打开文件。但此时该文件必须是存在的,否则将会出错。

5) 在打开一个文件时,如果出错,fopen将返回一个空指针值NULL。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。因此常用以下程序段打开文件:

6) if((fp=fopen("c:\\hzk16","rb")==NULL)

{

printf("\nerror on open c:\\hzk16 file!");

getch();

exit(1);

}

这段程序的意义是,如果返回的指针为空,表示不能打开C盘根目录下的hzk16文件,则给出提示信息“error on open c:\ hzk16 file!”,下一行getch()的功能是从键盘输入一个字符,但不在屏幕上显示。在这里,该行的作用是等待,只有当用户从键盘敲任一键时,程序才继续执行,因此用户可利用这个等待时间阅读出错提示。敲键后执行exit(1)退出程序。

7) 把一个文本文件读入内存时,要将ASCII码转换成二进制码,而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间。对二进制文件的读写不存在这种转换。

8) 标准输入文件(键盘),标准输出文件(显示器),标准出错输出(出错信息)是由系统打开的,可直接使用。

13.3.2 文件关闭函数(fclose函数)

文件一旦使用完毕,应用关闭文件函数把文件关闭,以避免文件的数据丢失等错误。

fclose函数调用的一般形式是:

fclose(文件指针);

例如:

fclose(fp);

正常完成关闭文件操作时,fclose函数返回值为0。如返回非零值则表示有错误发生。

13.4 文件的读写

对文件的读和写是最常用的文件操作。在C语言中提供了多种文件读写的函数:

·字符读写函数 :fgetc和fputc

·字符串读写函数:fgets和fputs

·数据块读写函数:freed和fwrite

·格式化读写函数:fscanf和fprinf

下面分别予以介绍。使用以上函数都要求包含头文件stdio.h。

13.4.1 字符读写函数fgetc和fputc

字符读写函数是以字符(字节)为单位的读写函数。每次可从文件读出或向文件写入一个字符。

1. 读字符函数fgetc

fgetc函数的功能是从指定的文件中读一个字符,函数调用的形式为:

字符变量=fgetc(文件指针);

例如:

ch=fgetc(fp);

其意义是从打开的文件fp中读取一个字符并送入ch中。

对于fgetc函数的使用有以下几点说明:

1) 在fgetc函数调用中,读取的文件必须是以读或读写方式打开的。

2) 读取字符的结果也可以不向字符变量赋值,

例如:

fgetc(fp);

但是读出的字符不能保存。

3) 在文件内部有一个位置指针。用来指向文件的当前读写字节。在文件打开时,该指针总是指向文件的第一个字节。使用fgetc 函数后,该位置指针将向后移动一个字节。 因此可连续多次使用fgetc函数,读取多个字符。应注意文件指针和文件内部的位置指针不是一回事。文件指针是指向整个文件的,须在程序中定义说明,只要不重新赋值,文件指针的值是不变的。文件内部的位置指针用以指示文件内部的当前读写位置,每读写一次,该指针均向后移动,它不需在程序中定义说明,而是由系统自动设置的。

【例13.1】读入文件c1.doc,在屏幕上输出。

#includestdio.h

main()

{

FILE *fp;

char ch;

if((fp=fopen("d:\\jrzh\\example\\c1.txt","rt"))==NULL)

{

printf("\nCannot open file strike any key exit!");

getch();

exit(1);

}

ch=fgetc(fp);

while(ch!=EOF)

{

putchar(ch);

ch=fgetc(fp);

}

fclose(fp);

}

本例程序的功能是从文件中逐个读取字符,在屏幕上显示。程序定义了文件指针fp,以读文本文件方式打开文件“d:\\jrzh\\example\\ex1_1.c”,并使fp指向该文件。如打开文件出错,给出提示并退出程序。程序第12行先读出一个字符,然后进入循环,只要读出的字符不是文件结束标志(每个文件末有一结束标志EOF)就把该字符显示在屏幕上,再读入下一字符。每读一次,文件内部的位置指针向后移动一个字符,文件结束时,该指针指向EOF。执行本程序将显示整个文件。

2. 写字符函数fputc

fputc函数的功能是把一个字符写入指定的文件中,函数调用的形式为:

fputc(字符量,文件指针);

其中,待写入的字符量可以是字符常量或变量,例如:

fputc('a',fp);

其意义是把字符a写入fp所指向的文件中。

对于fputc函数的使用也要说明几点:

1) 被写入的文件可以用写、读写、追加方式打开,用写或读写方式打开一个已存在的文件时将清除原有的文件内容,写入字符从文件首开始。如需保留原有文件内容,希望写入的字符以文件末开始存放,必须以追加方式打开文件。被写入的文件若不存在,则创建该文件。

2) 每写入一个字符,文件内部位置指针向后移动一个字节。

3) fputc函数有一个返回值,如写入成功则返回写入的字符,否则返回一个EOF。可用此来判断写入是否成功。

【例13.2】从键盘输入一行字符,写入一个文件,再把该文件内容读出显示在屏幕上。

#includestdio.h

main()

{

FILE *fp;

char ch;

if((fp=fopen("d:\\jrzh\\example\\string","wt+"))==NULL)

{

printf("Cannot open file strike any key exit!");

getch();

exit(1);

}

printf("input a string:\n");

ch=getchar();

while (ch!='\n')

{

fputc(ch,fp);

ch=getchar();

}

rewind(fp);

ch=fgetc(fp);

while(ch!=EOF)

{

putchar(ch);

ch=fgetc(fp);

}

printf("\n");

fclose(fp);

}

程序中第6行以读写文本文件方式打开文件string。程序第13行从键盘读入一个字符后进入循环,当读入字符不为回车符时,则把该字符写入文件之中,然后继续从键盘读入下一字符。每输入一个字符,文件内部位置指针向后移动一个字节。写入完毕,该指针已指向文件末。如要把文件从头读出,须把指针移向文件头,程序第19行rewind函数用于把fp所指文件的内部位置指针移到文件头。第20至25行用于读出文件中的一行内容。

【例13.3】把命令行参数中的前一个文件名标识的文件,复制到后一个文件名标识的文件中,如命令行中只有一个文件名则把该文件写到标准输出文件(显示器)中。

#includestdio.h

main(int argc,char *argv[])

{

FILE *fp1,*fp2;

char ch;

if(argc==1)

{

printf("have not enter file name strike any key exit");

getch();

exit(0);

}

if((fp1=fopen(argv[1],"rt"))==NULL)

{

printf("Cannot open %s\n",argv[1]);

getch();

exit(1);

}

if(argc==2) fp2=stdout;

else if((fp2=fopen(argv[2],"wt+"))==NULL)

{

printf("Cannot open %s\n",argv[1]);

getch();

exit(1);

}

while((ch=fgetc(fp1))!=EOF)

fputc(ch,fp2);

fclose(fp1);

fclose(fp2);

}

本程序为带参的main函数。程序中定义了两个文件指针fp1和fp2,分别指向命令行参数中给出的文件。如命令行参数中没有给出文件名,则给出提示信息。程序第18行表示如果只给出一个文件名,则使fp2指向标准输出文件(即显示器)。程序第25行至28行用循环语句逐个读出文件1中的字符再送到文件2中。再次运行时,给出了一个文件名,故输出给标准输出文件stdout,即在显示器上显示文件内容。第三次运行,给出了二个文件名,因此把string中的内容读出,写入到OK之中。可用DOS命令type显示OK的内容。

13.4.2 字符串读写函数fgets和fputs

1. 读字符串函数fgets

函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为:

fgets(字符数组名,n,文件指针);

其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后一个字符后加上串结束标志'\0'。

例如:

fgets(str,n,fp);

的意义是从fp所指的文件中读出n-1个字符送入字符数组str中。

【例13.4】从string文件中读入一个含10个字符的字符串。

#includestdio.h

main()

{

FILE *fp;

char str[11];

if((fp=fopen("d:\\jrzh\\example\\string","rt"))==NULL)

{

printf("\nCannot open file strike any key exit!");

getch();

exit(1);

}

fgets(str,11,fp);

printf("\n%s\n",str);

fclose(fp);

}

本例定义了一个字符数组str共11个字节,在以读文本文件方式打开文件string后,从中读出10个字符送入str数组,在数组最后一个单元内将加上'\0',然后在屏幕上显示输出str数组。输出的十个字符正是例13.1程序的前十个字符。

对fgets函数有两点说明:

1) 在读出n-1个字符之前,如遇到了换行符或EOF,则读出结束。

2) fgets函数也有返回值,其返回值是字符数组的首地址。

2. 写字符串函数fputs

fputs函数的功能是向指定的文件写入一个字符串,其调用形式为:

fputs(字符串,文件指针);

其中字符串可以是字符串常量,也可以是字符数组名,或指针变量,例如:

fputs(“abcd“,fp);

其意义是把字符串“abcd”写入fp所指的文件之中。

【例13.5】在例13.2中建立的文件string中追加一个字符串。

#includestdio.h

main()

{

FILE *fp;

char ch,st[20];

if((fp=fopen("string","at+"))==NULL)

{

printf("Cannot open file strike any key exit!");

getch();

exit(1);

}

printf("input a string:\n");

scanf("%s",st);

fputs(st,fp);

rewind(fp);

ch=fgetc(fp);

while(ch!=EOF)

{

putchar(ch);

ch=fgetc(fp);

}

printf("\n");

fclose(fp);

}

本例要求在string文件末加写字符串,因此,在程序第6行以追加读写文本文件的方式打开文件string。然后输入字符串,并用fputs函数把该串写入文件string。在程序15行用rewind函数把文件内部位置指针移到文件首。再进入循环逐个显示当前文件中的全部内容。

13.4.3 数据块读写函数fread和fwtrite

C语言还提供了用于整块数据的读写函数。可用来读写一组数据,如一个数组元素,一个结构变量的值等。

读数据块函数调用的一般形式为:

fread(buffer,size,count,fp);

写数据块函数调用的一般形式为:

fwrite(buffer,size,count,fp);

其中:

buffer 是一个指针,在fread函数中,它表示存放输入数据的首地址。在fwrite函数中,它表示存放输出数据的首地址。

size 表示数据块的字节数。

count 表示要读写的数据块块数。

fp 表示文件指针。

例如:

fread(fa,4,5,fp);

其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中。

【例13.6】从键盘输入两个学生数据,写入一个文件中,再读出这两个学生的数据显示在屏幕上。

#includestdio.h

struct stu

{

char name[10];

int num;

int age;

char addr[15];

}boya[2],boyb[2],*pp,*qq;

main()

{

FILE *fp;

char ch;

int i;

pp=boya;

qq=boyb;

if((fp=fopen("d:\\jrzh\\example\\stu_list","wb+"))==NULL)

{

printf("Cannot open file strike any key exit!");

getch();

exit(1);

}

printf("\ninput data\n");

for(i=0;i2;i++,pp++)

scanf("%s%d%d%s",pp-name,pp-num,pp-age,pp-addr);

pp=boya;

fwrite(pp,sizeof(struct stu),2,fp);

rewind(fp);

fread(qq,sizeof(struct stu),2,fp);

printf("\n\nname\tnumber age addr\n");

for(i=0;i2;i++,qq++)

printf("%s\t%5d%7d %s\n",qq-name,qq-num,qq-age,qq-addr);

fclose(fp);

}

本例程序定义了一个结构stu,说明了两个结构数组boya和boyb以及两个结构指针变量pp和qq。pp指向boya,qq指向boyb。程序第16行以读写方式打开二进制文件“stu_list”,输入二个学生数据之后,写入该文件中,然后把文件内部位置指针移到文件首,读出两块学生数据后,在屏幕上显示。

------

回复此文章 |

回复主题:Re:c语言文件操作 | 作者: haohao | 军衔:六级军士 | 发表时间:2004-07-28 11:08:47

下午应该把这个搞定了.

------

回复此文章 |

回复主题:Re:Re:c语言文件操作 | 作者: haohao | 军衔:六级军士 | 发表时间:2004-07-28 11:10:23

13.7 C库文件

C系统提供了丰富的系统文件,称为库文件,C的库文件分为两类,一类是扩展名为".h"的文件,称为头文件,在前面的包含命令中我们已多次使用过。在".h"文件中包含了常量定义、类型定义、宏定义、函数原型以及各种编译选择设置等信息。另一类是函数库,包括了各种函数的目标代码,供用户在程序中调用。 通常在程序中调用一个库函数时,要在调用之前包含该函数原型所在的".h" 文件。

下面给出Turbo C的全部".h"文件。

Turbo C头文件

n ALLOC.H 说明内存管理函数(分配、释放等)。

n ASSERT.H 定义 assert调试宏。

n BIOS.H 说明调用IBM—PC ROM BIOS子程序的各个函数。

n CONIO.H 说明调用DOS控制台I/O子程序的各个函数。

n CTYPE.H 包含有关字符分类及转换的名类信息(如 isalpha和toascii等)。

n DIR.H 包含有关目录和路径的结构、宏定义和函数。

n DOS.H 定义和说明MSDOS和8086调用的一些常量和函数。

n ERRON.H 定义错误代码的助记符。

n FCNTL.H 定义在与open库子程序连接时的符号常量。

n FLOAT.H 包含有关浮点运算的一些参数和函数。

n GRAPHICS.H 说明有关图形功能的各个函数,图形错误代码的常量定义,正对不同驱动程序的各种颜色值,及函数用到的一些特殊结构。

n IO.H 包含低级I/O子程序的结构和说明。

n LIMIT.H 包含各环境参数、编译时间限制、数的范围等信息。

n MATH.H 说明数学运算函数,还定了 HUGE VAL 宏, 说明了matherr和matherr子程序用到的特殊结构。

n MEM.H 说明一些内存操作函数(其中大多数也在STRING.H中说明)。

n PROCESS.H 说明进程管理的各个函数,spawn…和EXEC …函数的结构说明。

n SETJMP.H 定义longjmp和setjmp函数用到的jmp buf类型,说明这两个函数。

n SHARE.H 定义文件共享函数的参数。

n SIGNAL.H 定义SIG[ZZ(Z] [ZZ)]IGN和SIG[ZZ(Z] [ZZ)]DFL常量,说明rajse和signal两个函数。

n STDARG.H 定义读函数参数表的宏。(如vprintf,vscarf函数)。

n STDDEF.H 定义一些公共数据类型和宏。

n STDIO.H 定义Kernighan和Ritchie在Unix System V 中定义的标准和扩展的类型和宏。还定义标准I/O 预定义流:stdin,stdout和stderr,说明 I/O流子程序。

n STDLIB.H 说明一些常用的子程序:转换子程序、搜索/ 排序子程序等。

n STRING.H 说明一些串操作和内存操作函数。

n SYS\STAT.H 定义在打开和创建文件时用到的一些符号常量。

n SYS\TYPES.H 说明ftime函数和timeb结构。

n SYS\TIME.H 定义时间的类型time[ZZ(Z] [ZZ)]t。

n TIME.H 定义时间转换子程序asctime、localtime和gmtime的结构,ctime、 difftime、 gmtime、 localtime和stime用到的类型,并提供这些函数的原型。

n VALUE.H 定义一些重要常量,包括依赖于机器硬件的和为与Unix System V相兼容而说明的一些常量,包括浮点和双精度值的范围。

13.8 本章小结

1. C系统把文件当作一个“流”,按字节进行处理。

2. C文件按编码方式分为二进制文件和ASCII文件。

3. C语言中,用文件指针标识文件,当一个文件被打开时,可取得该文件指针。

4. 文件在读写之前必须打开,读写结束必须关闭。

5. 文件可按只读、只写、读写、追加四种操作方式打开,同时还必须指定文件的类型是二进制文件还是文本文件。

6. 文件可按字节,字符串,数据块为单位读写,文件也可按指定的格式进行读写。

7. 文件内部的位置指针可指示当前的读写位置,移动该指针可以对文件实现随机读写。

c语言 怎么查找 当前目录有哪些 文件

在命令提示符窗口运行:findfile (盘符):\ *.(文件后缀)

如:[sourcecode language=”plain”]findfile d:\ *.txt [/sourcecode]

即为找出d盘根目录下的所有.txt后缀的文件并写入文件路径于文件中。