1.9 文件操作

一、I/ O设备

输入设备:键盘、鼠标;软盘、硬盘、光驱;扫描仪、视频采集卡、电视卡、游戏杆、话筒……
输出设备:显示器、打印机;软盘、硬盘、 CD/DVD-RW ;音箱……

二、标准输入输出

三、流

四、外存和内存

五、文件

六、文件和流

七、文件系统

八、文件的打开和关闭

(一)、文件打开方式

1)文本文件

“r”   //只读   已存在的文件
“w”   //只写    不论该文件是否存在,都新建一个文件
“a”   //追加   向文本文件尾增加数据,该文件必须存在
“r+//读写   打开一个已存在的文件,用于读写
“w+//读写    建立一个新文件,可读可写
“a+//读写   向文件尾追加数据,也可读 

2)二进制文件

“rb”
“wb”
“ab”
“rb+”
“wb+”
“ab+

文件指针

FILE   *fp ;//FILE型指针变量,标识一个特定的磁盘文件
typedef struct  {
  	short level;          /*缓冲区‘满’或‘空’的程度*/
  	unsigned flags;       /*文件状态标志*/
  	char fd;              /*文件描述符*/
  	unsigned char hold;   /*如无缓冲区不读字符*/
  	short bsize;          /*缓冲区的大小*/
  	unsigned char *buffer;/*数据缓冲区的位置*/
  	unsigned char *curp;  /*指针当前的指向*/
  	unsigned istemp;      /*临时文件指示器*/
  	short token;          /*用于有效性检查*/
  }FILE;                    /*在stdio.h文件中定义*/

(二)文件的打开和关闭

1、fopen和fclose

 if ((fp = fopen("jessica.txt","w")) == NULL)//用于判断文件能否打开
int fclose(FILE *fp);

fclose函数的返回值:当顺利地执行了关闭操作,返回值为0;如果返回值为非零值,表示关闭时有错误

2、按字符读写文件
1)字符读写

int fgetc(FILE *fp);
/*从fp读出一个字符,将位置指针指向下一个字符
若读成功,则返回该字符,若读到文件尾,则返回EOF(EOF是一个符号常量,在stdio.h中定义为-1)
*/
int fputc(int c, FILE *fp);
/*向fp输出字符c
若写入错误,则返回EOF,否则返回c
*/

2)字符串读写

char *fgets(char *s,int n,FILE *fp);
/*从fp所指的文件中读取字符串并在字符串末尾添加'\0',然后存入s,最多读n-1个字符
当读到回车换行符、文件末尾或读满n-1个字符时,函数返回该字符串的首地址
*/
fgets(buf, sizeof(buf), stdin);//特例

int fputs(const char *s, FILE *fp);
 /*将字符串写入文件中。若出现写入错误,则返回 EOF,否则返回一个非负数*/

3、按格式读写文件
格式化读写

int fscanf(FILE *fp,const char *format,...);
fscanf(fp, "%d,%6.2f", &i, &t);//第1个参数为文件指针,第2 个参数为格式控制参数,第3 个参数为地址参数表列
int fprintf(FILE *fp,const char *format,...);
fprintf(fp, "%d,%6.2f", i, t);//第1个参数为文件指针,第2 个参数为格式控制参数,第3 个参数为输出参数表列

4、按数据块读写文件
fread和fwrite

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

延7488

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值