fread函数
从文件中读入数据到指定的地址中
函数原型
:
size_t fread(void*buff , size_t size, size_t count , FILE* stream)
/*
* @description :
对已打开的流进行数据读取
* @param ‐ ptr
:指向 数据块的指针
* @param ‐ size
:指定读取的每个数据项的字节数
* @param ‐ nmemb :
指定要读取的数据项的个数
* @param ‐ stream
:要读取的文件流
* @return : fread:返回实际读取数据项的个数;
*/
参数:
第一个参数为接收数据的指针
(buff),
也即数据存储的地址
第二个参数为单个元素的大小,即由指针写入地址的数据大小,注意单位是字节
第三个参数为元素个数,即要读取的数据大小为
size
的元素个素
第四个参数为提供数据的文件指针,该指针指向文件内部数据
返回值:读取的总数据元素个数
int num,count;
int* pr=new int [num*count];
fread(pr, num*4, count, stream); //stream
为
fopen
中返回的
FILE
指针
要将数据写入
pr
中,必须为
pr
分配内存,一个
int为4个字节,所以要x4
int fread(void *buffer
,
intsize
,
intcount
,
FILE*fp)
void *memset(void*buffer, int c, int count)
buffer
:为指针或是数组
c
:是赋给
buffer
的值
count
:是
buffer
的长度
memset(void*buff,0,sizeof(buff));
用来对一段内存空间全部设置为某个字符,一般用在对定义的字符串进行初
始化为
‘’
或
‘/0’
;
#include<stdio.h>
#include<string.h>
int main()
{
FILE *fp = NULL;
int nRet = 0 ;
char readBuff[12];/*定义一个长度为12的数组*/
memset(readBuff,0,12);/将数组内容初始化,为0,长度为12*/
fp =fopen("ll","r");/*打开ll只读*/
if (fp == NULL)
{
printf("open failed!\n");
return -1;
}
printf("open success!\n");
nRet =fread(readBuff,4,2,fp);/*从fp读到readBuff里面,每次读取4个字节,读两遍*/
if(nRet<=0)/*如果读到的个数小于等于0 ,说明没有读取,读取失败*/
{
printf("readBuff failed!");
return -3;
}
printf("readBuff is %s",readBuff);/*读取成功后,输出readBuff里面的内容*/
nRet = fclose(fp);
if(nRet)
{
printf("close failed!\n");
return -2;
}
printf("close success!\n");
return 0;
}
~
ll文件夹的内容为
lpych@lpych-virtual-machine:~$ vim demo2.c
打开demo2.c文件
lpych@lpych-virtual-machine:~$ gcc demo2.c -o demo
编译demo2.c文件,编译完后命名为demo
lpych@lpych-virtual-machine:~$ ls
列出各文件
lpych@lpych-virtual-machine:~$ ./demo
运行demo文件
执行结果
open success!
readBuff is 12345678close success!