博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言文件操作
阅读量:5247 次
发布时间:2019-06-14

本文共 2544 字,大约阅读时间需要 8 分钟。


 程序为什么需要文件?

1>配置
unix采用文本 Windows采用注册表二进制文件
2>媒体数据
存档在二进制文件中

还有很多用处


首先以标准的输入输出谈起~ 

(1)格式输入输出

printf("%[flag][width][.prec][hlL]type");

1>

flag 含义

- 左对齐
+ 允许显示正号
0 0填充

举例:

int main(){
  a = 123;  printf("-9%d",a);  printf("+9%d",a);  a = 123;  printf("+9%d",a);  printf("9%d",a);   return 0; }

屏幕上打印为

--------------------------

123
+123
-123
-123
--------------------------
2>

width或prec               含义

number               最小字符数
*                  下一个参数是字符数
.number          小数点后保留几位
.*            下一个参数是小数点后的位数
举例:
a = 123.4512;
printf("9.2%d",a);
printf("",a);
//9代表至少有九个字符,2后面保留的小数数位
屏幕上打印为
--------------------------
123.45

--------------------------

3>hlL修饰符

hh 单个字节
h short
l long
ll long long
L long double

4>type

显示类型
%d 整数类型
%f float
%o 八进制
%x 十六进制
e 指数
n 输入输出的个数
例如
printf("%nd",1234,&num) //num储存了输出的个数,在这个例子中是4
hh char
h short
l long double

(2)文件的操作

1>文件的打开与创建

用到fopen函数,先看一个例子

FILE *fp = fopen("12.in","r");if(fp){	    fscanf(fp,"%d",&num);    fclose(fp);}else{    //文件打开是失败}

 

FILE *fopen(char *pname,char *mode)

上述为函数原型,入口参数如下所示

pname:是一个字符指针,它将指向要打开或建立的文件的文件名字符串。

mode:是一个指向文件处理方式字符串的字符指针。所有可能的文件处理方式如下所示

----------------------------------

r 打开只读

r+ 打开读写,从文件开头开始
w 打开只写,文件不存在则新建,如果存在则清空
w+ 打开读写,文件不存在则新建,如果存在则清空
a 打开追加
..x 只新建,如果已经存在则无法打开

----------------------------------

返回值为状态:

正常返回:被打开文件的文件指针。
异常返回:NULL,表示打开操作不成功。

总结一下

打开文件的作用是:

(1)分配给打开文件一个FILE 类型的文件结构体变量,并将有关信息填入文件结构体变量;
(2)开辟一个缓冲区;
(3)调用操作系统提供的打开文件或建立新文件功能,打开或建立指定文件;

 2>文件的关闭

文件的关闭简单,就是利用fclose函数

int fclose(FILE *fp);

入口参数为文件指针,返回值为状态(正常为0,错误为EOF)

3>文件的读写操作

文件的读写有多种函数。

举一个例子,格式化读写。

格式化写

1.函数原型

int fprintf(FILE *fp,char *format,arg_list)

2.功能说明

  将变量表列(arg_list)中的数据,按照format指出的格式,写入由fp指定的文件。fprintf()函数与printf()函数的功能相同,只是printf()函数是将数据写入屏幕文件(stdout)。
3.入口参数说明
  fp:这是个文件指针,指出要将数据写入的文件。
  format:这是个指向字符串的字符指针,字符串中含有要写出数据的格式,所以该字符串成为格式串。格式串描述的规则与printf()函数中的格式串相同。
  arg_list:是要写入文件的变量表列,各变量之间用逗号分隔。

void main(){    char name[10];    int nAge,nClass;    long number;    FILE *fp;    if((fp=fopen("student.txt","w"))==NULL)    {        printf("The file %s can not be opened.\n","student.txt");        return;    }    fscanf(stdin,"%s %d %d %ld",name,&nClass,&nAge,&number);    fprintf(fp,"%s %5d %4d %8ld",name,nClass,nAge,number);    fclose(fp);    if((fp=fopen("student.txt","r"))==NULL)    {        printf("The file %s can not be opened.\n","student.txt");        return;    }    fscanf(fp,"%s %d %d %ld",name,&nClass,&nAge,&number);    printf("name nClass nAge number\n");    fprintf(stdout,"%-10s%-8d%-6d%-8ld\n",name,nClass,nAge,number);    fclose(fp);}

 

下面一篇文章对文件读写做出详细说明

 

转载于:https://www.cnblogs.com/flyingjun/p/5167512.html

你可能感兴趣的文章
Java EJX
查看>>
cas原理简介
查看>>
并发、并行、同步、异步、多线程的区别
查看>>
[实践]使用JarJar优雅的发布依赖包
查看>>
[置顶] 三五杆枪,可干革命,三五个人,可以创业
查看>>
getElementByName()和getElementById的区别
查看>>
存储过程转账
查看>>
C#中 从本地DataTable中 查询符合条件的数据
查看>>
音乐之声
查看>>
ppt点击文字出现图片,再次点击消失
查看>>
【转】Eclipse 常用快捷键 (动画讲解)
查看>>
Centos7配置ThinkPHP5.0完整过程(一)
查看>>
修改C#mvc的默认首页
查看>>
禅道Bug管理工具环境搭建
查看>>
浅谈一个网页打开的全过程(涉及DNS、CDN、Nginx负载均衡等)
查看>>
Metaprogramming in Ruby: It’s All About the Self
查看>>
UESTC 电子科大专题训练 数论 E
查看>>
ubantu系统出现登录界面死循环处理办法
查看>>
maven install 跳过测试
查看>>
最大长方形 (Maximum Submatrix & Largest Rectangle)(涵盖各种求最大矩形题目)
查看>>