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,,,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系统下文本和二进制模式下无区别。
总结:
- 是否是二进制打开,加b
- 读写方式:只读、只写、读写、追加只写、追加读写。
- 读文件是否必须存在,以及存在时是清空还是追加不同的响应。
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 打印简单日志(一)的更多相关文章
- Linux 打印可变参数日志
实现了传输进去的字符串所在的文档,函数和行数显示功能. 实现了将传入的可变参数打印到日志功能. #include<stdio.h> #include<stdarg.h> #in ...
- Linux学习之日志管理(二十一)
Linux学习之日志管理 目录 日志管理 日志服务 rsyslogd的新特点 启动日志服务 常见日志的作用 日志文件的一般格式 rsyslogd日志服务 /etc/rsyslog.conf配置文件 服 ...
- 就linux三剑客简单归纳
就linux三剑客简单归纳: :awk 习题1:用 awk 中查看服务器连接状态并汇总 netstat -an|awk '/^tcp/{++s[$NF]}END{for(a in s)print a, ...
- Linux进阶之日志管理
一.何为日志 1.在程序执行时,可以通过标准输出以及错误输出,让我们知道程序的执行情况,而系统不可能将所有程序的输出信息一起显示,要知道后台执行的程序非常之多,如果一起显示,那我们不用操作了,整天只看 ...
- 【阿里云产品公测】简单日志服务SLS使用评测 + 教程
[阿里云产品公测]简单日志服务SLS使用评测 + 教程 评测介绍 被测产品: 简单日志服务SLS 评测环境: 阿里云基础ECS x2(1核, 512M, 1M) 操作系统: CentOS 6.5 x6 ...
- Linux下重要日志文件及查看方式
http://os.51cto.com/art/201108/282184_all.htm 1.Linux下重要日志文件介绍 /var/log/boot.log 该文件记录了系统在引导过程中发生的 ...
- Linux操作系统log日志日志分别指什么
Linux操作系统log日志日志分别指什么 2019-04-20 20:41:05 一.一般的日志 /var/log/messages —包括整体系统信息,其中也包含系统启动期间的日志.此外,m ...
- linux下syslog-ng日志集中管理服务部署记录
syslog是Linux系统默认的日志守护进程,默认的syslog配置文件是/etc/syslog.conf文件.syslog守护进程是可配置的,它允许人们为每一种类型的系统信息精确地指定一个存放地点 ...
- Linux下rsyslog日志收集服务环境部署记录【转】
rsyslog 可以理解为多线程增强版的syslog. 在syslog的基础上扩展了很多其他功能,如数据库支持(MySQL.PostgreSQL.Oracle等).日志内容筛选.定义日志格式模板等.目 ...
随机推荐
- mybatis 基础(二) 动态sql 关于where if / where choose when otherwise
个人理解: where if就相当于正常的java中的if 语句,如果有多个条件组合判断的话用 and, or连接 而where choose when otherwise choose就好像是swi ...
- Eclipse 新建.jsp页面后,页面头部标签报错的解决方法
Eclipse 新建.jsp页面后,页面头部标签报错的解决方法 1.报错地方: 2.解决方法: .jsp页面右键==>BUild Path ==>Configure Build Path. ...
- Django进阶(一)
目录 choice参数 MTV与MVC模型 Ajax Ajax传json数据 Ajax传file数据 contentType前后端传输数据编码 ajax + sweetalert 序列化组件 补充 c ...
- linux 安装 python 最全教程
环境:centos6.5 centos6.5 自带的 python 版本是 2.6.6,需要重新安装 2.7: centos7 自带的 python 版本是 2.7.5 基本操作 在安装新版本之前,一 ...
- 修改公司VS_UCOS工程BUG调试过程说明
说明:公司里的工程中,使用VS_UCOS来调试应用程序.业务逻辑.方法是嵌入式和VS分别建一个工程,把底层驱动部分分别添加各自需要的源文件,头文件使用同一个.也就是嵌入式的驱动函数名和参数和VS的函数 ...
- eclipse运行jsp出现404错误怎么办?
Window/Show View/Other/Server/Servers/双击“Tomcat v7.0 Server at localhost”在Server Locations配置中选择第二个选项 ...
- redis 学习(二)-- 通用命令
redis 学习(二)-- 通用命令 1. keys pattern 含义:查找所有符合给定模式(pattern)的key 命令 含义 keys * 遍历所有 key keys he[h-l]* 遍历 ...
- C#中static修饰符的作用
static在C#中表示的是静态的,比如一个静态的字段是归类型所有,而非归对象所有,也就是说,在调用这个字段时,只能用类型去调,而不能用对象. 实例字段时随着对象创建而创建,对象销毁而销毁,而静态字段 ...
- 前端页面多级联动传输数据类型问题(数组or字符串)后端处理
在最近的工作中,遇到一个问题,个人所做的简历模块中有两个字段,分别是个人信息中的户口所在地和现居住城市. 前端界面中这两个选项框是用到了二级和三级联动,在向后端传输时希望可以通过数组类型进行传输,例如 ...
- 一份非常完整、详细的MySQL规范
一.数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名 ...