百度
360搜索
搜狗搜索

fread是什么意思,linux readwrite和freadfwrite有什么区别详细介绍

本文目录一览: 简答题:fgetc,fgets,fscanf,fread有什么样的区别?

fgetc用于文本读入,一次可以读取一个字符;
fgets用于文本读入,一次可以读入一个字符串,直到达到指定长度或遇到换行符;
fscanf用于文本读入,可以进行格式化的读取;
fread用于数据读入,一次可以读入多个字节。
首先这四个函数都是从文件或者输入设备读取数据,它们之间的主要区别如下:
一、fgetc
这个函数主要用于从文件或者输入设备逐个读取字符并通过返回值返回。一般如果是从文件读取,这个文件得提前以文本模式打开。
二、fgets
这个函数主要用于从文件或者输入设备读取一行字符,如果从文件读取也要求以文本模式打开文件。这个函数相对gets要安全,因为它可以通过第二个参数指定最大能读取的字符数,防止溢出。同时这个函数会读入换行符,它一般可以和fputs函数配合使用,fputs函数输出不会自动换行。fgets也可以从键盘输入字符,通过第三个参数指定读取位置,stdin表示从键盘,文件指针表示从文件。
三、fscanf
这个函数从文件中以格式化形式读取,也是要以文本形式打开文件,具体的用法和scanf一样。文件得是文本形式,二进制形式一般是会读取出错。
四、fread
fread函数主要用于以二进制模式从文件中读取数据,它一般和fwrite函数配合使用。主要用于结构体类型变量的读取。它要求文件先以二进制模式打开,如果不指定二进制模式在Windows系统可能出错,因为Windows的换行是两个字符,是换行和回车两个字符转化而来。所以使用这个函数最好以二进制打开。

linux readwrite和freadfwrite有什么区别

1、fread是带缓冲的,read不带缓冲.
2、fopen是标准c里定义的,open是POSIX中定义的.
3、fread可以读一个结构.read在linux/unix中读二进制与普通文件没有区别.
4,fopen不能指定要创建文件的权限.open可以指定权限.
5、fopen返回指针,open返回文件描述符(整数).
6、linux/unix中任何设备都是文件,都可以用open,read.
7、fread与read的区别
f是ANSI的C标准库。而后者的是UNIX下的系统调用。
fread带有缓冲,是read的衍生,或者说fread是通过read实现的
要想直接和硬件打交道,必须用read
例子:
如果文件的大小是8k。
你如果用read/write,且只分配了2k的缓存,则要将此文件读出需要做4次系统调用
来实际从磁盘上读出。
如果你用fread/fwrite,则系统自动分配缓存,则读出此文件只要一次系统调用从磁
盘上读出。
也就是用read/write要读4次磁盘,而用fread/fwrite则只要读1次磁盘。效率比read
/write要高4倍。
如果程序对内存有限制,则用read/write比较好。
一般用来处理文件:
都用fread 和fwrite,它自动分配缓存,速度会很快,比自己来做要简单
如果要处理一些特殊的描述符,用read 和write,如套接口,管道之类的

fread和fprintf,fwrite和fscanf的区别是什么?

fread fwrite fprintf fscanf fopen 这些都是带缓存的文件操作函数
fopen 打开文件,返回文件指针 对应的函数是 fclose(); 关闭文件指针
fread 是读取文件内容到数据缓冲区---指针(支持二进制数据) 对应的函数是 fwrite :将数据缓冲区的数据写到文件中去。
fscanf 格式化读文件内容到相应的数据指针中去(只支持文本方式) 对应的是 fprintf :格式化输出数据到文件中去。

fread和fwrite的区别是什么

fread(pBuffer,size,count,pFile);
fwrite(pBuffer,size,count,pFile);
  要读写一个数据块的话,无论是读还是写,都需要指定一个起始地址,读的话从这个起始地址读,写的话从这个起始地址写,上面函数定义中的第一个参数pBuffer就是用于指定这个起始地址,size读写的字节数,count则指定读写多少个size大小的数据,pFile是文件结构指针。
更多详细介绍以及使用示例请看参考资料
fwrite:向流中写数据
fread:从流中读数据
fwrite和fread是以记录为单位的I/O函数,fread和fwrite函数一般用于二进制文件的输入输出。
fread和fwrite的函数原型分别为:
size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
fread和fwrite函数的返回值:
读或写的记录数,成功时返回的记录数等于nmemb,出错或读到文件末尾时返回的记录数小于nmemb,也可能返回0。
fread和fwrite函数参数的含义:
参数size指出一条记录的长度;
参数nmemb指出要读或写多少条记录,这些记录在ptr所指的内存空间中连续存放,共占size * nmemb个字节;
ptr是指向的某连续内存空间的指针;
stream是文件指针;
fread从文件stream中读出size * nmemb个字节保存到ptr中所指的内存空间中;
fwrite把ptr中的size * nmemb个字节写到文件stream中。

C语言的问题,fread和fgets的区别是什么?

fread()函数通常用于读取二进制数据,用它可以精确的指定要读取多少字节的数据.
fgets()函数通常用于读取ASCII文本,它的参数是一个字符数组.
fread读入的内容不包括最后的字符串终结符,而fgets则包括这个,也就是说fread读入的内容不是字符串,因为少一个终结符,而fgets则读入的是一个字符串。
至于if(p)这个问题应该很明了,虽然p是指值,但是可以让指针指向NULL,这样的话就可以使用if(p)来判断指针是否指向了内存,若没有就跳过语句。
fread和 fgets的区别:
fread :以字节位计算长度,按照指定的长度和次数读取数据,遇到结尾或完成指定长度读取后停止.
fgets :整行读取,遇到回车换行或结尾停止.在文本方式时使用.
读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为:
fgets(字符数组名,n,文件指针);
其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后一个字符后加上串结束标志'\0'。
例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入字符数组str中。(按行读取)fgets()每次读入一行就会指向下一行.
所以把前面10行读进去了就清除. 然后下一次fgets()就是第十一行了.
fgets()怎么每次都是读一行?你怎么设定?
fread是用于整块数据的读写函数,可用来读写一组数据,如一个数组元素,一个结构变量的值等。
读数据块函数调用的一般形式为: fread(buffer,size,count,fp),其中:
buffer是一个指针,在fread函数中,它表示存放输入数据的首地址。
size 表示数据块的字节数。
count 表示要读写的数据块块数。
fp 表示文件指针。
例如: fread(fa,4,5,fp);
其意义是从fp所指的文件中,每次读4个字节(一个实数)送入实数组fa中,连续读5次,即读5个实数到fa中。
fread -- 读取文件(可安全用于二进制文件)在区分二进制文件和文本文件的系统上(如 Windows)打开文件时,fopen()
函数的 mode 参数要加上 'b'。$handle = fopen($filename, "rb");

fread中的count到底有什么用?

fread原型:size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;
fread是一个分段读取文件的函数,count就是分多少段,举例来说,同样在文件中读100个字节:
int a = fread(buf, 1, 100, fp); // a = 100int b = fread(buf, 100, 1, fp); // b = 1
其实count影响的是返回值,fread返回的是成功读取多少段,所以一般情况下,如果需要准确的知道到底读取了多少个字节,把size设为1,把count设为你需要读取的字节数,这样fread的返回值就是读取的字节数了。
性能方面不用担心,fread底层并不是一段一段调用系统调用去读的,是优化过的。

fread,fwrite和fscanf,fprintf有什么不同?

包含在 ASCII及扩展 ASCII 字符中编写的数据或程序指令的文件。计算机文件基本上分为二种:二进制文件和 ASCII(也称纯文本)文件,图形文件及文字处理程序等计算机程序都属于二进制文件。这些文件含有特殊的格式及计算机代码。ASCII 则是可以用任何文字处理程序阅读的简单文本文件。
由于很难严格区分文本文件和二进制文件的概念,所以我们可以简单地认为,如果一个文件专门用于存储文本字符的数据,没有包含字符以外的其他数据,我们就称之为文本文件,除此之外的文件就是二进制文件。
因此你的txt文件,里面是英文段落,这里面只有字符,而没有像其他形式如图形,那么你的txt就是一个文本文件。
fread,fwrite是对二进制文件进行读写的函数,而fscanf,fprintf是从磁盘文件中读写(可以是二进制,也可以是其他形式的文件)
以上是我的建议,希望对你有所帮助

fread(fid,[2,3],'int32') 是什么意思

fread是MATLAB读取文件的函数,fid是游标指针,代表txt文件,[2,3]表示文件的格式,两行3列,int32表示文件中数据类型,32位整型
fread(fid,[2,3],'int32') 这是一个函数调用, 应该可以理解,因为看不到你的完整程序,我只能大概猜想下,它接受3个实参:
1、fid 应该是一个(类或者用户自定义类型的)对象
2、[2,3] 这里操作符“ [] ” ,应该是被重载过了,具体实现功能还真猜不了
3、‘int32’ 这个我也有点有不解,最后把 前后相关的完整程序 贴上来
这是matlab的程序吧?
发到matlab版块比较好。
可以参看matlab官方文档http://www.mathworks.com/help/techdoc/ref/fread.html
[2,3]是1个2*3矩阵。
b是3阶幻方。
程序大体意思应该是把矩阵a写入到text.txt中,再读出来,和b乘一下。大概是检测读写函数的。
(怀疑fid=fopen('test.txt','r');应该是fid=fopen('text.txt','r');)
fread(fid,[2,3],'int32') 意思就是从文件中按int32格式读一个2*3的矩阵,赋给a。

fwrite()函数和fread()函数分别有几个返回值?分别代表什么意思?(C语言)

分类: 电脑/网络 >> 程序设计 >> 其他编程语言
解析:

fwrite(将数据写至文件流)
相关函数 fopen,fread,fseek,fscanf
表头文件 #include

定义函数 size_t fwrite(const void * ptr,size_t size,size_t nmemb,FILE * stream);

函数说明 fwrite()用来将数据写入文件流中。参数stream为已打开的文件指针,参数ptr 指向欲写入的数据地址,总共写入的字符数以参数size*nmemb来决定。Fwrite()会返回实际写入的nmemb数目。

返回值 返回实际写入的nmemb数目。

范例 #include

#define set_s (x,y) {strcoy(s[x].name,y);s[x].size=strlen(y);}

#define nmemb 3

struct test

{

char name[20];

int size;

}s[nmemb];

main()

{

FILE * stream;

set_s(0,”Linux!”);

set_s(1,”FreeBSD!”);

set_s(2,”Windows2000.”);

stream=fopen(“/tmp/fwrite”,”w”);

fwrite(s,sizeof(struct test),nmemb,stream);

fclose(stream);

}

执行 参考fread()。

fread(从文件流读取数据)

相关函数 fopen,fwrite,fseek,fscanf

表头文件 #include

阅读更多 >>>  len函数用法,excel中len函数是什么意思,如何使用?

定义函数 size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream);

函数说明 fread()用来从文件流中读取数据。参数stream为已打开的文件指针,参数ptr 指向欲存放读取进来的数据空间,读取的字符数以参数size*nmemb来决定。Fread()会返回实际读取到的nmemb数目,如果此值比参数nmemb 来得小,则代表可能读到了文件尾或有错误发生,这时必须用feof()或ferror()来决定发生什么情况。

返回值 返回实际读取到的nmemb数目。

附加说明

范例 #include

#define nmemb 3

struct test

{

char name[20];

int size;

}s[nmemb];

main()

{

FILE * stream;

int i;

stream = fopen(“/tmp/fwrite”,”r”);

fread(s,sizeof(struct test),nmemb,stream);

fclose(stream);

for(i=0;i
<nmemb;i++)
printf(“name[%d]=%-20s:size[%d]=%d\n”,i,s[i].name,i,s[i].size);

}

执行 name[0]=Linux! size[0]=6

name[1]=FreeBSD! size[1]=8

name[2]=Windows2000 size[2]=11
</nmemb;i++)

网站数据信息

"fread是什么意思,linux readwrite和freadfwrite有什么区别"浏览人数已经达到19次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:fread是什么意思,linux readwrite和freadfwrite有什么区别的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!