C语言中文件的研究(二) 一些常用命令的小结

来源:互联网 发布:织梦cms utf8 编辑:程序博客网 时间:2024/06/15 00:10

1.FILE  

       需要加入stdio来使用FILE

  格式:FILE *name  =  fopen(filename,type);
  filename是文件名
  type是指示文件读取方式的字符串:
  "r" = read "w" = write "rw" = read&write
  定义*name后,便可以使用fprintf(*FILE , string , var1 , var2 , ..)来快速读入读出文件了。

  利用FILE* 和fprintf的文件I/O速度是使用fstream文件流的256倍。

2.C语言函数fopen

       函数功能: 打开一个文件
  函数原型:FILE * fopen(const char * path,const char * mode);
  相关函数:openfclose,fopen_s[1] ,_wfopen
  所需库: <stdio.h>
  返回值: 文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。
  一般而言,打开文件后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。
  参数说明:
  参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
  mode有下列几种形态字符串:
  r 以只读方式打开文件,该文件必须存在。
  r+ 以可读写方式打开文件,该文件必须存在。
  rb+ 读写打开一个二进制文件,只允许读写数据。
  rt+ 读写打开一个文本文件,允许读和写。
  w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
  w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
  a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
  a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
  wb 只写打开或新建一个二进制文件;只允许写数据。
  wb+ 读写打开或建立一个二进制文件,允许读和写。
  wt+ 读写打开或着建立一个文本文件;允许读写。
  at+ 读写打开一个文本文件,允许读或在文本末追加数据。
  ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
  上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。

  有些C编译系统可能不完全提供所有这些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,读者注意所用系统的规定。

3.printf

 功 能:  产生格式化输出的函数(定义在 stdio.h 中)。

用 法:

  int printf(const char *format,[argument]);

  format 参数输出的格式,定义格式为:%[flags][width][.perc][F|N|h|l]type

  规定数据输出方式,具体如下:

  1.type 含义如下:

  d 有符号10进制整数

  i 有符号10进制整数

  o 无符号8进制整数

  u 无符号10进制整数

  x 无符号的16进制数字,并以小写abcdef表示

  X 无符号的16进制数字,并以大写ABCDEF表示

  F/f 浮点数

  E/e 用科学表示格式的浮点数

  g 使用%f和%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表示为指数

  c 单个字符

  s 字符串

  S wchar_t字符(宽字符)类型字符串

  % 显示百分号本身

  p 显示一个指针,near指针表示为:XXXX

  far 指针表示为:XXXX:YYYY

  n 相连参量应是一个指针,其中存放已写字符的个数

  2.flags 规定输出格式,取值和含义如下:

  无 右对齐,左边填充0和空格

  - 左对齐,右边填充空格

  + 在数字前增加符号 + 或 -

  0 将输出的前面补上0,直到占满指定列宽为止(不可以搭配使用-)

  空格 输出值为正时冠以空格,为负时冠以负号

  # 当type=c,s,d,i,u时没有影响

  type=o,x,X时,分别在数值前增加'0',"0x","0X"

  type=e,E,f时,总是使用小数点

  type=g,G时,除了数值为0外总是显示小数点

  3.width 用于控制显示数值的宽度,取值和含义如下

  n(n=1,2,3...) 宽度至少为n位,不够以空格填充

  0n(n=1,2,3...) 宽度至少为n位,不够左边以0填充

  * 格式列表中,下一个参数还是width

  4.prec 用于控制小数点后面的位数,取值和含义如下:

  无 按缺省精度显示

  0 当type=d,i,o,u,x时,没有影响

  type=e,E,f时,不显示小数点

  n(n=1,2,3...) 当type=e,E,f时表示的最大小数位数

  type=其他,表示显示的最大宽度

  .* 格式列表中,下一个参数还是width

  5.F|N|h|l 表示指针是否是远指针或整数是否是长整数

  F 远指针

  n 近指针

  h 短整数或单精度浮点数

  l 长整数或双精度浮点数

函数返回值:

  printf函数的一般形式为:

  int printf(const char *format,[argument]);

  以上形式,我们在Visual C++里输入“printf(”将会看到。

  说明printf函数类型为整型,其返回值是整型值。

  其值实际为printf控制输出的字符数。

  printf()函数实际上是将所有参数按字符输出,根据该函数的参数1(const char *format),我们不难理解。

4.windows下system () 函数详解

       windows操作系统下system () 函数详解(主要是在C语言中的应用) 函数名: system

  功 能: 发出一个DOS命令

  用 法: int system(char *command);

  system函数已经被收录在标准c库中,可以直接调用

       system("pause")可以实现冻结屏幕,便于观察程序的执行结果;system("CLS")可以实现清屏操作。而调用color函数可以改变控制台的前景色和背景,具体参数在下面说明。

  例如,用 system("color 0A"); 其中color后面的0是背景色代号,A是前景色代号。各颜色代码如下:

  0=黑色 1=蓝色 2=绿色 3=湖蓝色 4=红色 5=紫色 6=黄色 7=白色 8=灰色 9=淡蓝色 A=淡绿色 B=淡浅绿色 C=淡红色 D=淡紫色 E=淡黄色 F=亮白色

5.Exit()

        函数名: exit()

  功 能: 关闭所有文件,终止正在执行的程序。

  用 法: void exit(int status);

  参 数 : status //程序退出的返回值.

6.feof

功 能  检测流上的文件结束符

用 法  int feof(FILE *stream);

feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为1,否则为0。

  EOF是文本文件结束的标志。在文本文件中,数据是以字符的ASCⅡ代码值的形式存放,普通字符的ASCⅡ代码的范围是32到127(十进制),EOF的16进制代码为0x1A(十进制为26),因此可以用EOF作为文件结束标志。

  当把数据以二进制形式存放到文件中时,就会有-1值的出现,因此不能采用EOF作为二进制文件的结束标志。为解决这一个问题,ASCI C提供一个feof函数,用来判断文件是否结束。feof函数既可用以判断二进制文件又可用以判断文本文件。

  “C”语言的“feof()”函数和数据库中“eof()”函数的运做是完全不同的。数据库中“eof()”函数读取当前指针的位置,“C”语言的“feof()”函数返回的是最后一次“读操作的内容”。多年来把“位置和内容”相混,从而造成了对这一概念的似是而非。

  那么,位置和内容到底有何不同呢?举个简单的例子,比如有人说“你走到火车的最后一节车箱”这就是位置。而如果说“请你一直向后走,摸到铁轨结束”这就是内容。也就是说用内容来判断会“多走一节”。这就是完全依赖于“while(!feof(FP)){...}”进行文件复制时,目标文档总会比源文档“多出一些”的原因。

  在“C”文件读取操作时不能完全依赖于“while(!feof(FP)){...}”的判断。下面代码是改进后的代码,该代码执行后output文件内容和input文件内容一致,与使用“while(!feof(FP)){...}”相比,input文件的结尾符号(EOF)没有被读入到output文件中。

7.fgetc

功能  从流中读取字符。

用法 格式:int fgetc(FILE *stream);

     意为从文件指针stream指向的文件中读取一个字符。

     这个函数的返回值,是返回读取的一个字节。如果读到文件末尾返回EOF

8.fprintf

简介  是C/C++中得一个格式化写—库函数;其作用是格式化输出到一个流/文件中;

    函数完整形式: int fprintf(FILE *stream,char *format [,argument])

功 能  传送格式化输出到一个文件中

用 法  #include <stdio.h>

     int fprintf( FILE *stream, const char *format, ... );

    fprintf()函数根据指定的format(格式)(格式)发送信息(参数)到由stream(流)指定的文件. fprintf()只能和printf()一样工作. fprintf()的返回值是输出的字符数,发生错误时返回一个负值.

返回值  若成功则返回输出字符数,若输出出错则返回负值。

9.itoa

      itoa是广泛应用的非标准C语言扩展函数。由于它不是标准C语言函数,所以不能在所有的编译器中使用。但是,大多数的编译器(如Windows上的)通常在<stdlib.h>头文件中包含这个函数。在<stdlib.h>中与之有相反功能的函数是atoi。功能:把一整数转换为字符串。

       说明:当然文件操作的一些命令远远不止这些,这些都是常用的。最近一个项目的总结。

 

 

 

原创粉丝点击