zoukankan      html  css  js  c++  java
  • ferror,clearerr和EOF含义

    1.我们并不是实时操纵文件,也不是实时生效,它依赖于缓冲区。非缓冲模式编程与常规区别,就是实时与不实时的区别。

    2.//fgetc fputc, fgets fputs, fgetwc fputwc, fgetws fputws, fread fwrite这些函数都是缓冲区编程,当对数据要求非常高的时候,不能用这种模式,比如银行程序,存取钱不实时操作能行吗?

    3.EOF有两种含义:结束异常

    //缓冲区生效:fclose,fflush缓冲区
    //EOF有两种含义:结束,  异常
    
    #include  <stdio.h>
    
    void main()
    {
        FILE *pf = fopen("path", "w+"); //w模式不可写,
        fputs("hello world!", pf);    //没有生效,刷新清空缓冲区,或者手动关闭文件,才生效。
        fflush(pf);
        rewind(pf);
        int ch = fgetc(pf);
        if (ch == EOF)
        {
            if (feof(pf))
            {
                printf("end");
                clearerr(pf); //重置文件流状态,可以取消异常。意义不大,就是让指针退回了一步,打了一个空格。
            }
            if (ferror(pf))
            {
                printf("ferror");
                clearerr(pf);//重置文件流,文件指针不再前进。
            }
    
        }
    •  scanf("%d%d",&a,&b)!=EOF;    scanf返回的是读入数据的数目。
      • 如果a&&b都没有读入,那么上面表达式的结果为0(若a没有读入,则直接放弃b的读入);
      • 如果遇到错误或者文件结尾,那么上面表达式的结果为EOF,对应的有符号数时-1;
      • 如果遇到Crrl+Z,那么上面表达式的结果为EOF,对应的有符号数时-1;
  • 相关阅读:
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    Hadoop综合大作业
    hive基本操作与应用
    用mapreduce 处理气象数据集
    熟悉常用的HBase操作
    爬虫大作业
    熟悉常用的HDFS操作
    数据结构化与保存
    获取全部校园新闻
  • 原文地址:https://www.cnblogs.com/sjxbg/p/5893696.html
Copyright © 2011-2022 走看看