fopen,fwrite,fread使用

摘要:
头文件通常位于/usr/lib/gcc/i486-linux-gnu/4.3.2/include目录中。定义如下:#define_ SIZE_ TYPE__ longunisigneighter#define__ SIZE_ TYPE _ SIZE_ T表示SIZE_ T实际上是longuisigneighter类型,在32位机器上是4字节,在64位机器上为8字节=Sizeof)14{15printf;16return-1;17}1819//将文件指针定位到文件的开头,否则将无法读取数据20fseek;2122charbuf[32]={0};23size_踏板_ ret=fread;24if(read_ret!

fopen, fwrite, fread详解

1、头文件

#include <stdio.h>

2、fopen

(1) 函数原型

FILE *fopen(char *filename, *type)

函数用来打开一个文件

(2) 参数解析

  • filename,文件名
  • type,打开方式

  字符及其含义:

  打开方式由r,w,a,t,b,+这六个字符拼成,含义如下

  r(read):读

  w(write):写

  a(append):追加

  t(txt):文本文件,可省略

  b(banary):二进制文件

  "r"            打开文字文件只读          

  "w"           创建文字文件只写         

  "a"           增补, 如果文件不存在则创建一个     

  "r+"          打开一个文字文件读/        

  "w+"         创建一个文字文件读/          

  "a+"         打开或创建一个文件增补          

  "b"           二进制文件(可以和上面每一项合用)          

  "t"           文这文件(默认项)  

  使用方式及含义
  “rt”      只读打开一个文本文件,只允许读数据 
  “wt”      只写打开或建立一个文本文件,只允许写数据
  “at”      追加打开一个文本文件,并在文件末尾写数据
  “rb”      只读打开一个二进制文件,只允许读数据
  “wb”        只写打开或建立一个二进制文件,只允许写数据
  “ab”        追加打开一个二进制文件,并在文件末尾写数据
  “rt+”       读写打开一个文本文件,允许读和写
  “wt+”      读写打开或建立一个文本文件,允许读写
  “at+”       读写打开一个文本文件,允许读,或在文件末追加数 
  “rb+”       读写打开一个二进制文件,允许读和写 
  “wb+”      读写打开或建立一个二进制文件,允许读和写
  “ab+”       读写打开一个二进制文件,允许读,或在文件末追加数据

  ① 用”r”打开文件时,该文件必须存在,只读

  ② 用”w”打开文件时,若文件不存在,则创建,若存在,则将其删除,再创建一个文件

  ③ 用”a”打开文件时,可在其末尾写数据

(3) 函数调用成功返回FILE*指针,失败返回NULL

3、fwrite

(1) 函数原型

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream )

(2) 参数解析

  • ptr,要写入的数据的指针
  • size,每个数据类型的大小
  • count,数据个数
  • stream,文件指针

(3) 函数调用成功返回写入数据的个数,如果返回值与count不同,为写错误

(4) 写操作后最好调用fclose关闭流。

4、fread

(1) 函数原型

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream )

(2) 参数解析

  • ptr,读取数据保存结果的指针
  • size,每个数据类型的大小
  • count,数据个数
  • stream,文件指针

(3) 函数调用成功返回读取的数据个数,如果返回值与count不同,为读错误或者达到文件末尾

5、不关闭流的情况下,每次读或写数据后,文件指针都会指向下一个待写或者读数据位置的指针

6、size_t

size_t类型是ANSI C提供的标准头文件里的一个数据类型,头文件为:#include <stddef.h>。该头文件一般位于/usr/lib/gcc/i486-linux-gnu/4.3.2/include目录下。定义如下:

#define  __SIZE_TYPE__  long unsigned int

#define  __SIZE_TYPE__  size_t

也就是说size_t实际是long unsigned int类型,在32位机器上为4字节,在64位机器上为8字节。

7、程序示例:

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     FILE* file = fopen("/home/share/code/fopen_test/test.txt", "wt+");
 6     if(file == NULL)
 7     {
 8         printf("fopen error");
 9         return -1;
10     }
11     
12     size_t write_ret = fwrite("hello world", 1, sizeof("hello world"), file);
13     if(write_ret != sizeof("hello world"))
14     {
15         printf("fwrite error");
16         return -1;
17     }
18     
19     //将文件指针定位到文件开始,否则读取不到数据
20     fseek(file, 0, SEEK_SET);
21     
22     char buf[32] = {0};
23     size_t read_ret = fread(buf, 1, sizeof("hello world"), file);
24     if(read_ret != sizeof("hello world"))
25     {
26         printf("fread error");
27         return -1;
28     }
29     
30     fclose(file);
31     printf("%s
", buf);
32     
33     return 0;
34 }

免责声明:文章转载自《fopen,fwrite,fread使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JAVA取得WEBROOT物理路径(二)微信小程序的三种传值方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C语言中access、_mkdir、sprintf、 fopen、fwrite函数

int access(const char *filename, intamode); amode参数为0时表示检查文件的存在性,如果文件存在,返回0,不存在,返回-1。 这个函数还可以检查其它文件属性:06 检查读写权限04 检查读权限02 检查写权限01 检查执行权限00 检查文件的存在性而这个就算这个文件没有读权限,也可以判断这个...

基于第三方开源库的OPC服务器开发指南(3)——OPC客户端

本篇将讲解如何编写一个OPC客户端程序测试我们在前文《基于第三方开源库的OPC服务器开发指南(2)——LightOPC的编译及部署》一篇建立的服务器。本指南的目的是熟悉OPC服务器的开发流程,所以客户端部分我就不做过多描述,只是简单讲解几个关键技术细节及其实现函数,完整工程源码请从如下地址获取: https://github.com/Neo-T/OPCDA...

基于ALSA的WAV播放和录音程序

http://blog.csdn.net/azloong/article/details/6140824 这段时间在探索ALSA架构,从ALSA Core到ALSA Lib,再到Android Audio System。在看ALSA Lib时,写了一个比较典型的基于ALSA的播放录音程序。程序包包含四个部分: WAV Parser是对WAV文件的分析和封装...

第四季-专题10-字符设备驱动模型

专题10-字符设备驱动模型 第1课-使用字符驱动程序 编译/安装驱动 在Linux系统中,驱动程序通常采用内核模块的程序结构来进行编码。因此,编译/安装一个驱动程序,其实质就是编译/安装一个内核模块。 例子:字符设备驱动程序 编写makefile文件:        obj-m := memdev.o KDIR := /home/S5-driver/les...

fwrite文件写入数据

文件的操作就两种:读和写 读:把文件中的内容读入到程序中,然后根据自己的项目需求把文件的数据进行相关的处理。 写:就是将程序中的数据,写入到文件中,去更新文件。 这么两种操作归到代码中就是这两种函数:一组是写函数,一组是读函数。 读和写是成对出现的,fwrite和fread是一对,fputs和fgets 是一对。这里所说的一对的意思是:一对中的读和写对文...

Delphi2009初体验 语言篇 反射单元ObjAuto的加强

一、提出问题 在将json-rpc中JSONObject翻译成Delphi代码的时候,我碰到以下语句:  1 Method[] methods = klass.getMethods(); 2 … 3 Method method = methods[i]; 4 … 5 if (key.length() > 0 && 6     Ch...