首页 > 其他分享 >C语言文件操作

C语言文件操作

时间:2023-05-04 22:33:58浏览次数:48  
标签:fp 文件 fwrite count C语言 操作 array size

函数原型

  1. size_t fread(void *buffer, size_t size, size_t count, FILE *stream);  
  2. size_t fwrite(const void *buffer, size_t size, size_t count, FILE *stream);  

功能

 fread和fwrite用于读写记录,这里的记录是指一串固定长度的字节,比如一个int、一个结构体或者一个定长数组。参数size指出一条记录的长度,而count指出要读或写多少条记录,这些记录在ptr所指的内存空间中连续存放,共占size * count个字节,fread从文件stream中读出size  * count个字节保存到buffer中,而fwrite把buffer中的size,count个字节写到文件stream中。

头文件

#include<stdio.h>

返回值

  返回值:读或写的记录数,成功时返回的记录数等于count,出错或读到文件末尾时返回的记录
数小于count,也可能返回0。

说明

(1)buffer:是一个指针,对fwrite来说,是要输出数据的地址; (2)size:要写入内容的单字节数; (3)count:要进行写入size字节的数据项的个数; (4)stream:目标文件指针; (5)返回实际写入的数据项个数count。

例:

例1:fwrite

/****************fwrite*******************/
#include <stdio.h>  
#include <stdlib.h>  

struct record {  
    char name[10];  
    int age;  
};  

int main(void)  
{  
    struct record array[2] = {{"Ken", 24}, {"Knuth", 28}};  
    FILE *fp = fopen("recfile", "w");  
    if (fp == NULL) {  
        perror("Open file recfile");  
        exit(1);  
    }  
    fwrite(array, sizeof(struct record), 2, fp);  
    fclose(fp);  
    return 0;  
}

例2:fread

/*****************fread*********************/
#include <stdio.h>  
#include <stdlib.h>  

struct record {  
    char name[10];  
    int age;  
};  

int main(void)  
{  
    struct record array[2];  
    FILE *fp = fopen("recfile", "r");  
    if (fp == NULL) {  
        perror("Open file recfile");  
        exit(1);  
    }  
    fread(array, sizeof(struct record), 2, fp);  
    printf("Name1: %s\tAge1: %d\n", array[0].name, array[0].age);  
    printf("Name2: %s\tAge2: %d\n", array[1].name, array[1].age);  
    fclose(fp);  
    return 0;  
}

例3:将一个字符串写入文件:

char *str="hello,I am a test program!";  
fwrite(str,sizeof(char),strlen(str),fp)  


例4:将一个字符数组写入文件:

char str[]={'a','b','c','d','e'};  
fwrite(str,sizeof(char),sizeof(str),fp)  

3.将一个整型数组写入文件:

 int a[]={12,33,23,24,12};
fwrite(a,sizeof(int),nmemb,fp);

    

注:

1、在定义文件指针时,要将文件指针指向空;如 FILE *fp = NULL; 2、文件操作完成后,需要将文件关闭,一定要注意,否则会造成文件所占用内存泄露和在下次访问文件时出现问题。 3、文件关闭后,需要将文件指针指向空,这样做会防止出现游离指针,而对整个工程造成不必要的麻烦;如:fp = NULL;

标签:fp,文件,fwrite,count,C语言,操作,array,size
From: https://www.cnblogs.com/full-stack-linux-new/p/17372737.html

相关文章

  • C语言--指针的进阶2
    函数指针存放函数地址的指针。intAdd(intx,inty){ returnx+y;}intmain(){ inta=10; intb=20; //printf("%d\n",Add(a,b));//&函数名,函数名,都是函数的地址。 //int(*pa)(int,int)=&Add; int(*pa)(int,int)=Add;//对于函数指针的解引用下面都......
  • ffmpeg下载m3u8视频文件并保存为mp4格式
    ffmpeg-i'http://xx.com/xx.m3u8'-ccopy-bsf:aaac_adtstoascxx.mp4#修改User-Agentffmpeg-i'http://xx.com/xx.m3u8'-ccopy-bsf:aaac_adtstoascxx.mp4-user-agent"Mozilla/5.0(Macintosh;IntelMacOSX10_15_7)AppleWebKit/537......
  • Django内置序列化组件(drf前身)和批量操作数据加上分页器
    目录一、django内置序列化组件(drf前身)这里的内置序列化组件,其实就是实现将后端数据,存放到字典中或是存放到列表中有序输出。方式一这里是我们用JsonResponse模块自己实现的代码'''前后端分离的项目视图函数只需要返回json格式的数据即可'''fromapp01importmodelsfr......
  • CONNECT THE DOTS 挂载操作 jsfuck ftp download 信息收集
    主机发现sudonmap-sT--min-rate10000-p-xx.x.xx.x-oAnmapscan/ports要提取出所有的端口,进行字符操作catnmapscan/ports|grepopen|awk-F'/''{print$1}'|tr'\n\r'','sudonmap-sT-sC-sV-O-pxx.xx.xx.xx-oAnmapscan/......
  • java基础-数组的定义,静动态初始化,数组元素的相关操作、数组的内存图
    一、什么是数组数组指的是一种容器,可以用来存储同种数据类型的多个值。数组容器在存储数据的时候,需要结合隐式转换考虑。例如:int类型的数组容器,只能存储byte、short、int类型的数据。(byte<short<int<long<float<double)例如:double类型的数组容器,可以存储byte、short、int、long......
  • 倒序输出文件中的文本(英文文本,Linux环境)
    /*倒序显示文本内容:linux环境*/#include<stdio.h>#include<stdlib.h>#defineSLEN81intmain(void){char*file="hello.txt";charch;FILE*fp;longcount,last;if((fp=fopen(file,"rb"))==NULL){//只......
  • 头文件中应该放什么东西
    头文件中的内容在编译时会填充到include这个头文件的cpp文件中,所以头文件中有什么东西,相当于cpp文件中也有什么东西,如果有多个include这个头文件的cpp文件,那么它们相当于都获得了这个头文件中的内容的一个副本,发生重定义错误。所以很多东西的定义不能放在头文件,只能放声明,否则会......
  • js基础---数组操作(破坏性改变数组)
    数组元素的crudpush():像数组末尾添加一个或多个元素并返回数组的新长度pop():删除并返回数组的最后一个元素unshift():像数组的开头添加一个或多个元素,并返回数组的长度shift:删除并返回数组的第一个元素splice(1,3,“111”):删除添加插入替换数组中的元素.(删除包括第一个坐标元素后面的三......
  • springboot 多环境配置及配置文件的位置
    了解即可  ......
  • 兼容 windows 和 Linux 的fgets文件读取方式(判断文件尾)
    /*检测文件尾范例使用fgets读取文件*//*范例:检测文件尾,windows和linux,unix平台兼容版本*/#include<stdio.h>#include<stdlib.h>#defineBUFSIZE100intmain(void){FILE*f;charstr[BUFSIZE];char*result;//读方式打开文件hello.txt,如果文件不......