zoukankan      html  css  js  c++  java
  • linux的fwrite()使用方法,当前时间写入文本的程序

    fwrite函数

    1.函数功能

    用来读写一个数据块。

    2.一般调用形式

    fwrite(buffer,size,count,fp);

    3.说明

    (1)buffer:是一个指针,对fread来说,它是读入数据的存放地址。对fwrite来说,是要输出数据的地址。

    (2)size:要读写的字节数;

    (3)count:要进行读写多少个size字节的数据项;

    (4)fp:文件型指针

       这是工作中用 fwrite函数写的例子,不仅记录下自己的学习情况,也分享给各位朋友这个fwrite函数实例。

    这个fwrite实例是当前时间写入文本的程序,下面这个是fwrite函数的使用方法。
    int markfile(void )
    {
        FILE *sp ;
    //    char buff[512] ;
        char count = 0;
        char *currentime = NULL;
        char *wday[] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
        time_t timep;
        struct tm *p;
        time(&timep);
        p = localtime(&timep);
        currentime = ctime(&timep);
    //    memset(buff,0,512);
    //    sprintf(buff,"%s",currentime);
        printf("%d/%d/%d",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);
        printf(" %s %d:%d:%d ",wday[p->tm_wday],p->tm_hour,p->tm_min,p->tm_sec);
        if((sp = fopen("/root/kay/mark.txt","a+")) == NULL)
           return 0;
        fwrite(currentime,size(currentime)-1,1,sp);
        fclose(sp);
        return 1;
    }

    size(currentime)( = 26 )的作用是得出指针currentime所指的字符串的个数(包括''),但是会输出乱码(应该是字符串的个数太长了),因此,我把个数减掉一个,就能舒适正确结果。

    用另外一种方法:
    int markfile(void )
    {
        FILE *sp ;
        char buff[512] ;
        char count = 0;
        char *currentime = NULL;
        char *wday[] = {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
        time_t timep;
        struct tm *p;
        time(&timep);
        p = localtime(&timep);
        currentime = ctime(&timep);
    //    memset(buff,0,512);
        sprintf(buff,"%s",currentime);
        printf("%d/%d/%d",(1900+p->tm_year),(1+p->tm_mon),p->tm_mday);
        printf(" %s %d:%d:%d ",wday[p->tm_wday],p->tm_hour,p->tm_min,p->tm_sec);
        if((sp = fopen("/root/kay/mark.txt","a+")) == NULL)
           return 0;
        fwrite(currentime,(count = strlen(buff)),1,sp);
        printf("%d ",count);
        fclose(sp);
        return 1;
    }
    count = strlen(buff) 来获得字符的个数  结果是25,

    综上的对比 觉得是fwrite()输出的字符不要包括结束符(''),否则会因为字符个数多了而造成乱码

        看完的朋友,觉得对你们有帮助就顶一个,如果觉得哪里不好,可以发表下看法,共同学习。

  • 相关阅读:
    .net 命名规范
    解决Swagger刷新后不能保持登录问题
    修改表结构后视图错位问题
    创建.net api文档
    编写.net core tools教程
    VuePress 侧边栏几种配置
    VS 好用快捷键
    Jenkins 修改端口
    获取当前被调用的方法
    遇到异常 add-migration Build failed 解决办法
  • 原文地址:https://www.cnblogs.com/zhouhbing/p/4107492.html
Copyright © 2011-2022 走看看