Linux 用C/C++创建新文件并写入内容

1、需求

在Linux环境下用C编写一个函数,用于记录运行日志,要求只存在一个同名文件,每次记录前清除已有的信息。

2、思路

需要完成的是:

(1)查找(access)是否该文件存在,存在则删除,不存在则新建(fopen)。

(2)定位写入记录的位置(fseek)。

(3)写文件(fprintf)。

(4)刷新文件(fflush)。

(5)关闭文件退出(fclose)。

3、代码实现,采用数据流和标准库。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>/*! Printf netting result in *.lni format */
static void PrintfLoRaNettingInfo(void)
{char *filename = "Info.lni";FILE *fd;char content[4096];int i;time_t timep;/*! check if exist */if(access(filename,F_OK) == 0){remove(filename);}/*! creat and opne */fd = fopen(filename,"a+");if(fd == NULL){printf("[ NET ]:open file error\n");return;}/*! table head */time (&timep);sprintf(content,"%s\n",asctime(localtime(&timep)));fprintf(fd,content);fseek(fd, 0, SEEK_END);sprintf(content,"nodeIdx      addr  isValid  isConnected  isRouted  routeNodeIdx  netLayer  netQuality  upSNR  downSNR  timecost\n");fseek(fd, 0, SEEK_END);fprintf(fd,content); for(i = 0; i < MAX_SLAVE_NODE; i++){sprintf(content,"%7d  %8d  %7d  %11d  %8d  %12d  %8d  %10d  %5d  %7d  %8d\n",i,*((uint32_t *)Slave.node[i].addr),Slave.node[i].isValid,Slave.node[i].isConnected,Slave.node[i].isRouted,Slave.node[i].routeNodeIdx,Slave.node[i].netLayer,Slave.node[i].netQuality,Slave.node[i].upSNR,Slave.node[i].downSNR,Slave.node[i].nettingTimeCost);fseek(fd, 0, SEEK_END);fprintf(fd,content);fflush(fd);}fclose(fd);printf("[ NET ]:Info.lni creat ok\n");
}

4、效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态加载JS脚本【转】

原文&#xff1a;http://mario-design.iteye.com/blog/147810 要实现动态加载JS脚本有4种方法&#xff1a; 1、直接document.write <script language"javascript"> document.write("<script srctest.js><\/script>"); </script>…

如何将Eclipse中的开源项目使用到Android Studio中

近几日&#xff0c;笔者用到了一些开源项目&#xff0c;比如著名的PTR项目。但是在使用的过程中&#xff0c;遇到了一些问题。 这个开源库是在Eclipse上面写的&#xff0c;我们现在开发用的是Android stuido。 两种软件的项目结构是不同的&#xff0c;那么怎么把PTR用到我们的项…

EditPlus常用快捷键

From: http://katrina.blog.51cto.com/709863/144111 editplus占内存比较小&#xff0c;加载速度快&#xff0c;很强大。文本类&#xff1a;新建普通文本 CtrlN 新建普通的文本(经常建立一个新脚本平时很容易遇到)新建浏览器窗口 CtrlShiftB 新建浏览器…

[react] super()和super(props)有什么区别?

[react] super()和super(props)有什么区别&#xff1f; react 中的class 是基于es6的规范实现的, 继承是使用extends关键字实现继承的&#xff0c;子类必须在constructor()中调用super() 方法否则新建实例 就会报错&#xff0c;报错的原因是 子类是没有自己的this对象的&#…

VC实现表单提交并设置获取COOKIE:

可以尝试通过 HttpAddRequestHeaders 来添加自已的COOKIE: char * lpszHeaders "Cookie: Keysomevalue"; DWORD dwHeadersLength strlen(lpszHeaders); HttpAddRequestHeaders(hOpenRequest, lpszHeaders, dwHeadersLength, HTTP_ADDREQ_FLAG_A…

STM32 网络通信Web Server中 SSI与CGI的应用解析

本次主要解析STM32网络通信中WebServer应用&#xff0c;从网页界面的编写到浏览器与STM32之间进行通信的数据来说明SSI与CGI的原理及应用&#xff0c;并对GET与POST指令进行应用解析。 硬件和软件环境&#xff1a; 1.硬件环境&#xff1a;STM32F407&#xff0c;网卡芯片LAN87…

ggg

ggg转载于:https://www.cnblogs.com/britphy/p/4744739.html

树莓派SSH 连接不上:socket error Event:32 Error:10053

问题如下&#xff1a; 解决办法&#xff1a;ssh文件夹下的文件权限问题。 cd /etc/ssh sudo chmod 0644 * sudo chmod 0600 ssh_host_ecdsa_key ssh_host_rsa_key登陆成功&#xff1a;

嵌入式设备web服务器比较

现在在嵌入式设备中所使用的web服务器主要有&#xff1a;boa、thttpd、mini_httpd、shttpd、lighttpd、goaheand、appweb和apache等。 Boa 1.介绍 Boa诞生于1991年&#xff0c;作者Paul Philips。是开源的&#xff0c;应用很广泛&#xff0c;特别适合于嵌入式设备&#xff0c…

UML造型——使用EA时序图工具的开发实践和经验

Enterprise Architect&#xff08;下面简称EA&#xff09;是一款基于OMG UML的可视化模型与设计工具。提供了对软件系统的设计和构建、业务流程建模和基于领域建模的支持&#xff0c;被企业和组织不仅应用于对系统的建模&#xff0c;还用于推进模型在整个应用程序开发周期中实现…

Qt QInputDialog文本输入对话框示例

1、代码如下 //引入头文件: #include <QInputDialog>//...//...//...//具体用法&#xff1a; bool isOK;//QInputDialog 是否成功得到输入 QString text QInputDialog::getText(NULL, "参数设定", "输入单次召测统计时间&#xff0c;eg.\"0:0:…

winform 与WPF

winform 与WPF 在多线程上的改进性能没大区别&#xff0c;WPF 是富客户端&#xff0c;winform是常见的客户端&#xff0c;就是说wpf实现一些绚丽界面比winform更容易&#xff0c;这就是他们的区别&#xff0c;当然wpf是微软取代winform的客户端技术&#xff0c;所以在一些数据绑…

[react] 怎样将事件传递给子组件?

[react] 怎样将事件传递给子组件&#xff1f; 这道题出的有问题。 一般情况下我们父组件向子组件传递的不是事件&#xff0c;而是事件处理函数 const Parent ({ lastName }) > {onClick () {console.log(event handler in parent)}return <Child lastName{lastName} o…

EF 6 code first - 从SQL server迁移到MySQL

最近鼓捣一个SaaS项目&#xff0c;后台用的是entity framework 6 code first &#xff0b;SQL server&#xff0c;需要把数据库迁移到MySQL&#xff0c;在这里记录一下遇到的问题。时间比较久了记得不是很准确&#xff0c;供参考。 1&#xff0c; 以前残留的Migration .cs文件&…

三种嵌入式web服务器(Boa / lighttpd / shttpd)的 linux移植笔记

一&#xff1a;移植Boa(web服务器)到嵌入式Linux系统 一、Boa程序的移植 1、下载Boa源码 下载地址: http://www.boa.org/ 目前最新发行版本&#xff1a; 0.94.13 &#xff08;几年没更新版本了&#xff09; 下载 boa-0.94.13.tar.gz&#xff0c; 注意&#xff…

单元测试工具Numega BoundsChecker

From: http://blog.csdn.net/wangweitingaabbcc/article/details/7794985 1 前言 我在本文中详细介绍了测试工具NuMega Devpartner(以下简称NuMega)的使用方法。 NuMega是一个动态测试工具&#xff0c;主要应用于白盒测试。该工具的特点是学习简单、使用方便、功能有效。NuM…

Qt split字符串分割

1、需求 从指定格式的时间字符串中提取关键参数。 2、实现 调用字符串的split方法 QString text "12:14:35"; QStringList list text.split(":");int hour list[0].toInt(); int min list[1].toInt(); int sec list[2].toInt();

在Codeigniter框架中使用NuSOAP

0、NuSOAP的简介 NuSOAP 是一组功能强大的PHP类&#xff0c;这个工具的发布让使用和创建SOAP消息变得相当简单。 NuSOAP有Dirtrich Ayala编写&#xff0c;可以无缝的与许多最流行的SOAP服务实现交互&#xff0c;它以LGPL协议进行发布。NuSOAP的主要特性包括&#xff1a; 简单&a…

[react] 你有使用过loadable组件吗?它帮我们解决了什么问题?

[react] 你有使用过loadable组件吗&#xff1f;它帮我们解决了什么问题&#xff1f; 目前有两个 react-loadable和 loadable component&#xff0c;用于代码分割&#xff0c;解决打包体积过大的问题 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易…

JAVA运行程序代码段

我记得那时候刚毕业。学习JAVA恐惧是这里&#xff0c;它是关于JAVA称号。我总是不正确。如今&#xff0c;这最后审查。看了好半天。得赶紧把刚才学习到的那点东西记下来。 一、关于static的代码段运行顺序 运行结果例如以下&#xff1a; Inside main() Mug(1) Mug(2) c1 & …