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参数不同,则会出现一个错误。

  • 相关阅读:
    C++类中的函数重载
    C++中的友元
    bzoj 2820
    莫比乌斯函数
    bzoj 2440: [中山市选2011]完全平方数
    莫比乌斯反演1
    [转]C++ 指针和引用
    P2756 飞行员配对方案问题
    P2055 [ZJOI2009]假期的宿舍
    P2654 原核生物培养
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11150859.html
Copyright © 2011-2022 走看看