• 作业-11.8


    目录

    1、使用fgets统计文档的行数和大小

    2、用文档记录时间,并且编号连续

    3、标准IO的文件打开方式与文件IO的flag选项的对应关系


    1、使用fgets统计文档的行数和大小

    #include

    int main(int argc, const char *argv[])
    {
        char buf[2];
        if(argc<2 || argc>2)
        {
            printf("参数不正确\n");
            return -1;
        }
        FILE *fp_r = fopen(argv[1], "r");
        int line = 0;
        int data_size = 0;

        while(1)
        {
            if(!fgets(buf, 2, fp_r))
            {
                fprintf(stderr, "文件读取结束或者失败\n");
                break;
            }
            if(buf[0] == '\n')
            {
                line++;
            }
            data_size++;
        }
        printf("%s有%d行,是%d字节.\n", argv[1], line, data_size);

        fclose(fp_r);

        return 0;
    }

    2、用文档记录时间,并且编号连续

    //----------------------------------------------------方法一--------------------------------------------------//

    #include
    #include
    #include
    #include

    int main(int argc, const char *argv[])
    {
        time_t t;
        struct tm *info = NULL;
        FILE *fp_time = fopen("./time.txt", "a+");
        if(!fp_time)
        {
            perror("fopen");
            return -1;
        }

      char c;
        int i = 0;

        while(1)
        {

            c  =  fgetc(fp_time);
            if( c < 0)
            {
                break;
            }
            if('\n' == c)
            {
                i++;
            }
        }

        system("clear");
        while(1)
        {
            i++;


            t = time(NULL);
            info = localtime(&t);

            fprintf(fp_time,"[%d] %d-%02d-%02d %02d:%02d:%02d\n",i,\
                    info->tm_year+1900, info->tm_mon+1,  info->tm_mday,\
                    info->tm_hour,info->tm_min, info->tm_sec);

            fflush(fp_time);

            printf("[%d] %d-%02d-%02d %02d:%02d:%02d\r",i,\
                    info->tm_year+1900, info->tm_mon+1,  info->tm_mday,\
                    info->tm_hour,info->tm_min, info->tm_sec);

            fflush(stdout);

            sleep(1);
        }

        fclose(fp_time);

        return 0;
    }

    //----------------------------------------------------方法二--------------------------------------------------//

    #include
    #include
    #include
    #include

    int main(int argc, const char *argv[])
    {
        time_t t;
        struct tm *info = NULL;
        FILE *fp_time = fopen("./time.txt", "a+");
        if(!fp_time)
        {
            perror("fopen");
            return -1;
        }

        struct tm tmp;
        int i = 0;
        while(1)
        {
            while(1)
            {
                if(fscanf(fp_time,"[%d] %d-%02d-%02d %02d:%02d:%02d\n", &i, &tmp.tm_year,\
                        &tmp.tm_mon, &tmp.tm_mday, &tmp.tm_hour, &tmp.tm_min\,  

                     &tmp.tm_sec) <0 )
                {
                    break;
                }
            }
            i++;
            
            system("clear");
            t = time(NULL);
            info = localtime(&t);
            fprintf(fp_time,"[%d] %d-%02d-%02d %02d:%02d:%02d\n",i,\
                    info->tm_year+1900, info->tm_mon+1,  info->tm_mday,\
                    info->tm_hour,info->tm_min, info->tm_sec);
            fflush(fp_time);
            printf("[%d] %d-%02d-%02d %02d:%02d:%02d\r",i,\
                    info->tm_year+1900, info->tm_mon+1,  info->tm_mday,\
                    info->tm_hour,info->tm_min, info->tm_sec);
        fflush(stdout);
            sleep(1);
        }

        fclose(fp_time);

        return 0;
    }

     

    3、标准IO的文件打开方式与文件IO的flag选项的对应关系

  • 相关阅读:
    [21天学习挑战赛——内核笔记](九)——sysfs相关API
    【Leetcode笔记】236.二叉树的最近公共祖先
    SwiftUI 动态岛开发教程之 05 Dynamic Island 和 Live Activity 无需太多代码即可为用户提供大量信息
    华为ensp:vrrp双机热备负载均衡
    Redis与MySQL双写一致性如何保证
    Redis系列:使用Redis实现分布式锁及相关问题
    内存四区的基本概念
    【你不知道的javascript上】对象,可迭代对象,for in和for of的区别
    ssl教程易语言代码
    一代人有一代人的使命
  • 原文地址:https://blog.csdn.net/MisakaMikotto/article/details/127754636