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,一经查实,立即删除!

相关文章

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

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

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

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

树莓派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:…

单元测试工具Numega BoundsChecker

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

在Codeigniter框架中使用NuSOAP

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

Keil使用PC-Lint

Keil使用PC-Lint 随着项目的推进与迭代&#xff0c;一个Project的代码量往往会不知不觉增长&#xff0c;当项目代码达到数万行&#xff0c;迭代经历较长时间后&#xff0c;仅靠开发人员自身的代码质量已不能满足对整体质量的把控。难以避免会出现一些潜在的逻辑错误与非逻辑错误…

嵌入式产品开发流程

嵌入式产品&#xff0c;与普通电子产品一样&#xff0c;开发过程都需要遵循一些基本的流程&#xff0c;都是一个从需求分析到总体设计&#xff0c;详细设计到最后产品完成的过程。但是&#xff0c;与普通电子产品相比&#xff0c;嵌入式产品的开发流程又有其特殊之处。它包含嵌…

Codeforces 478B 6thweek contest_B

Random teams 题意&#xff1a; 有n个选手和m个队伍&#xff0c;让你分配&#xff0c;条件是每个队伍至少要有1个选手。分配完之后&#xff0c;每队伍里2个人可以组成一组&#xff0c;求分配完之后最多的组数和最少的组数 分析&#xff1a; 1. 最多的情况就是&#xff0c;先每…

如何Keil官网下载器件支持包Software Packs

步骤1&#xff1a;百度一下Keil&#xff0c;在搜索结果中点击打开官网 步骤2&#xff1a;在官网的搜索栏输入Software Packs&#xff0c;点击Go 步骤3&#xff1a;点击打开MDK Software Packs 步骤4&#xff1a;往下拉&#xff0c;找到自己需要的Pack 步骤5&#xff1a;以下载s…

为文档快速插入页眉和页脚

专业的文档往往需要配以漂亮的页眉、页脚等修饰性元素才会更加完美。在Word 2010中您不必再为设计漂亮页眉和页脚而大费周折&#xff0c;内置的“页眉样式库”和“页脚样式库”为您提供了丰富的选择余地。 &#xff08;1&#xff09;打开Word 2010文档&#xff0c;在“插入”选…

[BBS]搭建开源论坛之Jforum搭配开源CKEDITOR

本文作者&#xff1a;sushengmiyan本文地址&#xff1a;http://blog.csdn.net/sushengmiyan/article/details/47946065使用默认的编辑器的时候&#xff0c;格式都无法保存。现在按照上节的方法更改了编辑器。今天再对编辑器进行更改&#xff0c;适应jforum.效果如下图了。记录几…

Windows7休眠状态下载技巧攻略

Windows7休眠状态下载技巧攻略 你想让你的快车或者是迅雷通宵下载电影&#xff0c;而且还能省电么?或许你会说&#xff0c;我不关机&#xff0c;给迅雷和快车添加完下载任务&#xff0c;挂在那里不就可以了吗?这没错&#xff0c;开着电脑通宵下载是可以&#xff0c;但这样的方…

Linux du查看磁盘文件夹占用容量

1、du 查看当前文件夹的占用容量&#xff1a; du -sh eg. 查看/usr的占用 2、指定层级查看 查看当前目录下最多一级目录的容量 du -h --max-depth1

Struts2学习笔记《二》

struts.xml配置文件的全部配置元素&#xff1a;       转载于:https://www.cnblogs.com/abc8023/p/4760284.html

Linux mount挂载和umont卸载U盘

1、树莓派插入U盘没有自动挂载&#xff0c;可以在/dev/下看到盘符&#xff0c;但是打不开&#xff0c;需要挂载到指定的文件位置。 2、挂载U盘使用mount命令。 &#xff08;1&#xff09;首先查看插入设备后的文件描述符&#xff1a;找到sda1 (2)新建文件夹 (3)挂载U盘到Udis…

iOS 如果刷新TableViewCell上得数据是空的 添加尾部暂无数据提示

其实很简单 只需要给tableView底部添加一个View 然后View上添加一个Label就可以了 做个衣服判断 数组为空的话则给一个这样的View 转载于:https://www.cnblogs.com/guochaoboke/p/4761429.html

Ubuntu如何卸载安装的软件以FileZilla为例

1、查看已安装的软件包&#xff1a; dpkg --list 2、卸载FileZilla sudo apt-get remove filezilla