zoukankan      html  css  js  c++  java
  • Linux 打印简单日志(一)

    简单日志输出:

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    
    void write(char* filename,char* szStr){
        FILE* fp;
        fp = fopen(filename,"at+");
        if(fp != NULL){
            fwrite(szStr,256,1,fp); //
            fclose(fp);
            fp = NULL;
        }
    }
    
    int main(int argc, char** argv){
        int i;
        for(i = 0; i < argc; i++){
            write("log.txt",argv[i]);
        }
        return 0;
    }

    Attention:

    fwrite(szStr,256,1,fp); // fwrite(szStr,strlen(szStr),1,fp);

    日志会出现乱码的情况

    fopen()函数:

    函数声明:include<stdio.h>

    函数原型:FILE *fopen(const char *filename, const char *mode);

    函数参数:filename:log文件名  mode:文件访问模式

    函数功能:按照给的的模式mode打开filename所指向的文件

    函数返回值:文件顺利打开后,指向改流的文件指针就会被返回。如果文件打开失败,就返回NULL,并把错误代码存储在error中。

    参数说明:

    mode有几种形态的字符串:

    r

    以只读的方式打开文件,文件必须存在

    r+

    以读/写的方式打开文件,文件必须存在

    rb+

    以读/写的方式打开一个二进制文件,只允许读写数据

    rt+

    以读/写方式打开一个文本文件,允许读和写

    w

    打开只读文件,若文件存在则文件长度清零,即文件内容会消失;若文件不存在,则创建该文件

    a

    以附加的方式打开只写文件,若文件不存在,则创建该文件,若文件存在,将写入的数据加在文件的末尾

    a+

    以附加的方式打开读/写文件,若文件不存在,则创建该文件,若文件存在,将写入的数据加在文件的末尾

    wb

    以只写的方式打开或新建一个二进制文件,只允许写数据

    wb+

    以只写的方式打开或新建一个二进制文件,允许读和写

    wt+

    以读/写的方式打开一个文本文件,允许读和写

    at+

    以读/写方式打开一个文本文件,允许读或在文本末追加数据

    ab+

    以读/写的方式打开一个二进制文件,允许读或者在文件末尾追加数据

    补充:

    1.以x结尾的模式为独占模式,文件已存在或无法创建(一般为路径文件问题)导致fopen打开失败。文件以操作系统支持的独占模式打开。

    2.上述的形态字符串都可以再加一个b字符,如rb/w+b/ab+等,加入b字符来告诉函数库以二进制打开文件。如果没有b,则默认加t,即以文本模式打开文件。

    3.二进制和文本模式区别:

    在windows系统中,文本模式下:文件以“ ”代表换行。若以文本模式打开文件,并用fputs等函数写入换行符“ ”时,函数会自动在“ ”前面加“ ”。即实际写入文件的时“ ”。

    在unix/linux系统中,文本模式下“ ”代表换行,linux系统下文本和二进制模式下无区别。

    总结:

    1. 是否是二进制打开,加b
    2. 读写方式:只读、只写、读写、追加只写、追加读写。
    3. 读文件是否必须存在,以及存在时是清空还是追加不同的响应。

    fwrite()函数:

    函数原型:size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream)

    函数参数:

    ptr:      指向要被写入的元素数组的指针。

    size:    要被写入的每个元素的大小,单位字节

    nmemb:     元素的个数,每个元素大小为size字节

    stream:      这是指向FILE对象的指针,该FILE对象指定了一个输出流。

    函数功能:把ptr所指向的数组中的数据写入到指定的stream中。

    返回值:       如果成功,返回一个size_t的对象,表示元素的总数,该对象是一个整型数据类型。如果该数字与nmemb参数不同,则会出现一个错误。

  • 相关阅读:
    iOS NSDictionary或NSArray与JSON字符串相互转换
    iOS 如何用Xib画一个Button
    iOS 你不知道的字符串用法
    IOS ScrollView pagingEnabled移动指定偏移
    TableView行缩进 自定义cell时候
    支付宝回调
    微信支付回调
    关于Bundle传递消息
    关于Handler
    ExpandableListView
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11150859.html
Copyright © 2011-2022 走看看