简单日志输出:

#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,,,fp); //
fclose(fp);
fp = NULL;
}
} int main(int argc, char** argv){
int i;
for(i = ; i < argc; i++){
write("log.txt",argv[i]);
}
return ;
}

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系统中,文本模式下:文件以“\n\r”代表换行。若以文本模式打开文件,并用fputs等函数写入换行符“\n”时,函数会自动在“\n”前面加“\r”。即实际写入文件的时“\r\n”。

在unix/linux系统中,文本模式下“\n”代表换行,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参数不同,则会出现一个错误。

Linux 打印简单日志(一)的更多相关文章

  1. Linux 打印可变参数日志

    实现了传输进去的字符串所在的文档,函数和行数显示功能. 实现了将传入的可变参数打印到日志功能. #include<stdio.h> #include<stdarg.h> #in ...

  2. Linux学习之日志管理(二十一)

    Linux学习之日志管理 目录 日志管理 日志服务 rsyslogd的新特点 启动日志服务 常见日志的作用 日志文件的一般格式 rsyslogd日志服务 /etc/rsyslog.conf配置文件 服 ...

  3. 就linux三剑客简单归纳

    就linux三剑客简单归纳: :awk 习题1:用 awk 中查看服务器连接状态并汇总 netstat -an|awk '/^tcp/{++s[$NF]}END{for(a in s)print a, ...

  4. Linux进阶之日志管理

    一.何为日志 1.在程序执行时,可以通过标准输出以及错误输出,让我们知道程序的执行情况,而系统不可能将所有程序的输出信息一起显示,要知道后台执行的程序非常之多,如果一起显示,那我们不用操作了,整天只看 ...

  5. 【阿里云产品公测】简单日志服务SLS使用评测 + 教程

    [阿里云产品公测]简单日志服务SLS使用评测 + 教程 评测介绍 被测产品: 简单日志服务SLS 评测环境: 阿里云基础ECS x2(1核, 512M, 1M) 操作系统: CentOS 6.5 x6 ...

  6. Linux下重要日志文件及查看方式

    http://os.51cto.com/art/201108/282184_all.htm   1.Linux下重要日志文件介绍 /var/log/boot.log 该文件记录了系统在引导过程中发生的 ...

  7. Linux操作系统log日志日志分别指什么

    Linux操作系统log日志日志分别指什么 2019-04-20    20:41:05 一.一般的日志 /var/log/messages —包括整体系统信息,其中也包含系统启动期间的日志.此外,m ...

  8. linux下syslog-ng日志集中管理服务部署记录

    syslog是Linux系统默认的日志守护进程,默认的syslog配置文件是/etc/syslog.conf文件.syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点 ...

  9. Linux下rsyslog日志收集服务环境部署记录【转】

    rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...

随机推荐

  1. java多线程的优先性问题

    多线程的优先级问题 重点:理解线程优先级的继承性.规则性.随机性 线程的优先级 在操作系统中,线程可以划分优先级,.尽可能多的给优先级高的线程分配更多的CPU资源. 线程的优先级分为1~10,有三个预 ...

  2. Python 入门 之 双下方法

    Python 入门 之 双下方法 1.双下方法 ​ 定义:双下方法是特殊方法,它是解释器提供的 由双下划线加方法名加双下划线 方法名的具有特殊意义的方法,双下方法主要是python源码程序员使用的,我 ...

  3. ajax实现异步操作实例1

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. python 一键登录微信分析好友性别 地址 生成结果

    # -*- coding:utf- -*- """ author:Mr Yang data:// """ import itchat imp ...

  5. Spark运行时的内核架构以及架构思考

    一: Spark内核架构 1,Drive是运行程序的时候有main方法,并且会创建SparkContext对象,是程序运行调度的中心,向Master注册程序,然后Master分配资源. 应用程序: A ...

  6. docker之常用命令

    1) docker run -p : --name mysql -v d:/docker/mysql/conf:/etc/mysql/conf.d -v d:/docker/mysql/logs:/l ...

  7. 北京化妆时尚气息自适应CSS例子

    三里屯太古广场——北京化妆时尚气息的先锋阵地! “乐色起义”创意化妆设计大赛——国内最具创意的公益设计大赛! CNature——国内最具个性的时尚环保公益组织! 一个多么奇妙的组合!就在2010年的这 ...

  8. python--命令(各个模块的安装)

    python命令行 退出python命令行:exit() 安装pymysql pip install pymysql 安装request pip install requests 1.安装django ...

  9. java-第三方包没有打进war包里面

    java-web的项目中引用第三方的jar包,在打成war包部署测试,出现报错,提示找不到引用的jar 解决方案: 1.在eclipse的项目--右键属性---deployment assembly- ...

  10. TableView 键盘弹起冲突

    1.TableView 上cell 带有 TextField,如果 是Plain 形式的TableView ,并且设置SectionHeader的 取消粘滞效果 会导致键盘弹起,页面不能正常 上移 问 ...