fread和fgets

复制代码
#include <stdio.h>
/*fread:以字节位计算长度,按照指定的长度和次数读取数据,遇到结尾或完成指定长度读取后停止.     
fgets:整行读取,遇到回车换行或结尾停止.在文本方式时使用.   
其实文本和二进制的差别就在于读取的数据,文本方式会默认为是ASCII码,二进制方式则原样将数据读出.
所以文本时候的格式控制如回车,制表符等,二进制的时候是不能有效的自动判断的。     
他们的效率要看具体的程序和算法的,否则差别并不会很大.
其中fread   最快.因为可以指定读取长度.能够有效的减少I/O操作,硬盘读取才是文件操作最耗时的部分.*/
int main(int argc, char *argv[])
{
    FILE *stream;    
    if ((stream = fopen("C:/Users/wen/Desktop/test.txt", "rb")) == NULL) {        
        fprintf(stderr,"Cannot open output file.\n");        
        return 1;    
    }        
    char data[5];      
    //从一个文件流中读数据,读取5个元素,每个元素1字节.    
    while(fread(data, 1,sizeof(data), stream) != 0)    {               
        printf("%s",data);    
    }
    //一次从文件中读取4个字节数据到data数组中    
    /*while (fgets(data,5,stream)!=NULL) {        
        printf("%s",data);    
    }*/
    return 0;
}
复制代码

 

posted on   南瓜饼  阅读(669)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

导航

< 2013年1月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9
点击右上角即可分享
微信分享提示