1.C 文件读写:

一个文件,无论它是文本文件还是二进制文件,都是代表了一系列的字节。C 语言不仅提供了访问顶层的函数,也提供了底层(OS)调用来处理存储设备上的文件。

a.打开文件:

FILE *fopen( const char * filename, const char * mode );

filemame是文件名,mode是指模式---比如说 "r" 指打开一个已有的文本文件,允许读取文件。详情网上随便都有。

sub:  如果fopen显示不安全,就声明一个        #define _CRT_SECURE_NO_WARNINGS

b.关闭文件:

int fclose( FILE *fp );

如果成功关闭文件,fclose( ) 函数返回零,如果关闭文件时发生错误,函数返回 EOF。这个函数实际上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。EOF 是一个定义在头文件 stdio.h 中的常量。

c.写入文件:

int fputc( int c, FILE *fp );

函数 fputc() 把参数 c 的字符值写入到 fp 所指向的输出流中。如果写入成功,它会返回写入的字符,如果发生错误,则会返回 EOF

int fputs( const char *s, FILE *fp );

函数 fputs() 把字符串 s 写入到 fp 所指向的输出流中。如果写入成功,它会返回一个非负值,如果发生错误,则会返回 EOF。您也可以使用:

int fprintf(FILE *fp,const char *format, ...)

函数来写把一个字符串写入到文件中。

d.读取文件:

下面是从文件读取单个字符的最简单的函数

int fgetc( FILE * fp );

如果是字符串:

char *fgets( char *buf, int n, FILE *fp );

函数 fgets() 从 fp 所指向的输入流中读取 n - 1 个字符。它会把读取的字符串复制到缓冲区 buf,并在最后追加一个 null 字符来终止字符串。

如果这个函数在读取最后一个字符之前就遇到一个换行符 '\n' 或文件的末尾 EOF,则只会返回读取到的字符,包括换行符。

e. 二进制 I/O 函数:

下面两个函数用于二进制输入和输出:

size_t fread(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);
 
size_t fwrite(const void *ptr, size_t size_of_elements, size_t number_of_elements, FILE *a_file);
 

这两个函数都是用于存储块的读写 - 通常是数组或结构体。

f.在指定位置开始读取:

fseek 可以移动文件指针到指定位置读,或插入写

具体:

int fseek(FILE *stream, long offset, int whence);

fseek 设置当前读写点到 offset 处, whence 可以是 SEEK_SET,SEEK_CUR,SEEK_END 这些值决定是从文件头、当前点和文件尾计算偏移量 offset。

你可以定义一个文件指针 FILE *fp,当你打开一个文件时,文件指针指向开头,你要指到多少个字节,只要控制偏移量就好,例如, 相对当前位置往后移动一个字节:fseek(fp,1,SEEK_CUR); 中间的值就是偏移量。 如果你要往前移动一个字节,直接改为负值就可以:

fseek(fp,-1,SEEK_CUR);

注意: 只有用 r+ 模式打开文件才能插入内容,w 或 w+ 模式都会清空掉原来文件的内容再来写,a 或 a+ 模式即总会在文件最尾添加内容,哪怕用 fseek() 移动了文件指针位置。

引用:https://www.runoob.com/cprogramming/c-file-io.html

最新文章

  1. CSS解决未知高度垂直居中
  2. 自适应网页设计(Responsive Web Design)
  3. 【No.1】监控Linux性能25个命令行工具
  4. Java 8的五大开发技巧
  5. JPA的主键生成策略
  6. Tmall Programmer Triples Smartisan Sales
  7. Swift - 按钮(UIButton)的用法
  8. python爬虫学习--防盗链
  9. Quartz.NET总结(六)了解Jobs 和 Triggers
  10. this final 关键字
  11. 关于前端HTML你需要知道的一切
  12. Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程
  13. Pandas数据的去重,替换和离散化,异常值的检测
  14. asp.net mvc 5 单元测试小例子
  15. [py模块]random&string取随机字符串
  16. [Erlang21]Erlang性能分析工具eprof fporf的应用
  17. WP8.1StoreApp(WP8.1RT)---SystemTray的变化
  18. vsftpd FTP服务器配置
  19. jquery ajax api
  20. Angular2 表单(一) 用户输入

热门文章

  1. Oracle 11g DATAGUARD 同步延时监控脚本
  2. Linux安装包生成工具:checkinstall、makeself
  3. ACM 基本输入
  4. acwing 50. 序列化二叉树
  5. 第五章 与HTTP协作的Web服务器
  6. 用vbs和ADSI管理Windows账户
  7. MySQL下载和安装教程
  8. H5双重标题的适配
  9. CSS-页面超出手机屏幕
  10. 《细说PHP》第四版 样章 第18章 数据库抽象层PDO 6