C语言学习笔记 lesson19 文件处理函数

文件处理函数

处理方式

 二进制

 文本

FILE 

文件缓冲区,任何操作都是作用于缓冲区中,将文件的数据读取到缓冲区中,在处理整个文件的时候,速度会更快

fopen

文件的打开方式

 "r":只读 :只读取内容 ,如果文件不存在,会打开失败

"w":只写:不打开,往里面写入。 文件存在,则会将原文件内容清空,再写入。如果不存在,则先新建,再新增。

"a":追加:在末尾加新内容。文件存在,添加到末尾


"+" 更新模式  

"r+"可读可写,从头开始读写,不存在不会新建

"w+" 可读可写

"a+"可读可写


"b" 二进制方式打开

文本文件处理时用的不多,文件的加解密,压缩时使用

"x" 独占方式打开


读取

getc   :从流中取字符用 法: int getc(FILE *stream);

fscanf 根据数据格式从输入流中写入数据  int fscanf(FILE*stream, constchar*format, [argument...]);

fgets   char*fgets(char*buf,intbufsize,FILE*stream)

写入

putc   字符ch输出到fp所指的文件中 putc(intch,FILE*fp)

fprintf 格式化输出到一个流/文件中 int fprintf( FILE *stream, const char *format, [ argument ]...)

fputs  将指定的字符串写入到文件流中,其原型为: int fputs(char * string, FILE * stream); 


#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main()

{

//FILE *fp = fopen("D:\\fos.txt", "r+");//使用r+添加,在文件开头会有游标,如果并没有对文件进行读取,游标默认在开头,添加会覆盖开头的值

FILE *fp = fopen("D:\\fos.txt", "a+");//使用a+,将文件默认在结尾

char ch = 0;

while ((ch=getc(fp))!= EOF)   //文件不存在 ,getc会出错

{

putchar(ch);

}

printf("\r\nInput (#end):\n");

while ((ch = getchar()) != '#')

{

putc(ch, fp); //写入缓存区

}

fclose(fp);  //关闭缓冲区,把缓存区内容写入文件

getchar();

return 0;

}


游标

EOF

ftell  获取当前游标的位置

fseek

位置:

SEEK_SET开头 

SEEK_CUR 当前位置

SEEK_END 末尾


#include <stdio.h>

char readoutputch(FILE *fp)

{

char ch = getc(fp);

putchar(ch);   //读取输出到屏幕上

return ch;

}

int main()

{

FILE *fp = fopen("D:\\fos.txt", "a+");  //使用a+,将文件默认在结尾

if (fp != NULL) {

char ch = 0;

int count = 0;

while ((ch = getc(fp)) != EOF)  //文件不存在 ,getc会出错

{

count++;

putchar(ch);

}

long last = ftell(fp);  //linux下last和count一样 ,windows下会把\n计算在内

fseek(fp, 0, SEEK_SET); //游标移动到最前面

readoutputch(fp);  //读取当前字符,游标+1

fseek(fp, last, SEEK_CUR);  //游标移动到末尾

readoutputch(fp);       //读取 值为空, 打印出空格

fseek(fp, -last, SEEK_END);    // 游标往前移动 ,到最前面

fclose(fp);//关闭缓冲区,把缓存区内容写入文件

getchar();

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值