C语言
文章平均质量分 83
普通网友
这个作者很懒,什么都没留下…
展开
-
重新温习fscanf和fprintf的格式化串
一、完整格式% - 0 m.n l或h 格式字符① % :表示格式说明的起始符号,不可缺少。② - :有-表示左对齐输出,如省略表示右对齐输出。③ 0 :有0表示指定空位填0,如省略表示指定空位不填。④ m.n :m指域宽,若数据的位数小于m,则左端补空格,若大于m,则按实际位数输出。 n指精度,用于说明输出的实型数的小数位数。未指定n时,隐含的精度为n=6位。⑤ l或h :l对整型指long型,对实型指double型。h用于将整型的格式字符修正为sho...原创 2022-04-22 19:13:52 · 478 阅读 · 0 评论 -
C语言编写获取Linux本地目录及本机信息的小程序及获取系统内存、cpu、硬盘等信息实例
展示目录的小程序展示指定目录的小程序:#include <unistd.h>#include <stdio.h>#include <dirent.h>#include <string.h>#include <sys/stat.h>#include <stdlib.h>void printdir(char *dir,int depth){ DIR *dp; struct dirent *entry; st...原创 2021-04-30 11:44:29 · 573 阅读 · 0 评论 -
Qt C++ C 常用数据类型转换汇总
//int转QStringQString QString::number ( long n, int base = 10 ) [static]long a = 63; QString s = QString::number(a, 10); // s == "63" QString t = QString::number(a, 16).toUpper(); // t == "3F"QString s = QString("%1").arg(a);//s ==...原创 2021-01-05 18:12:50 · 1497 阅读 · 0 评论 -
C++ 类的静态成员及静态成员函数总结及C语言中的__FILE__、__LINE__和__func__等预定义跟踪调试小记录
对象与对象之间的成员变量是相互独立的。要想共用数据,则需要使用静态成员和静态方法。 只要在类中声明静态成员变量,即使不定义对象,也可以为静态成员变量分配空间,进而可以使用静态成员变量。(因为静态成员变量在对象创建之前就已经被分配了内存空间) 静态成员变量虽然在类中,但它并不是随对象的建立而分配空间的,也不是随对象的撤销而释放(一般的成员在对象建立时会分配空间,在对象撤销时会释放)。静态成员变量是在程序编译时分配空间,而在程序结束时释放空间。 静态成员的定义和声明要加个关键static。原创 2020-10-19 14:28:48 · 482 阅读 · 0 评论 -
Qt 日志之Qdebug 二次封装类
简单的日志库可以用Qdebug做一个注册InstallMessageHandle,还有一种是使用开源的日志库,如Boost 库,Log4Qt 等。开源这些日志功能比较强大,Qdebug的话做些本地运行日志跟踪状态,还是足够的。文件夹存放日志,按时间命名,大于1024 * 1024 * 4 ,(4M)自动新建文件。大小可以根据具体项目更改.时间,文件名+行号+level +信息 :[18:03:58.210][..\testQdebug\main.cpp-11][Info]: test qDebug原创 2020-10-17 18:27:04 · 669 阅读 · 0 评论 -
C、C++语言实现日志封装
logger.h/** * logger.h * @brief 简易日志模块 */#ifndef __LOGGER_H__#define __LOGGER_H__#include <iostream>#include <iomanip>#include <fstream>#include <string>#include <cstdlib>#include <stdint.h>typedef enum原创 2020-10-17 14:43:48 · 1042 阅读 · 0 评论 -
ROS2 Dashing源码编译和安装
ROS2 Dashing源码编译和安装安装前的准备 1 2 3 4 5 官方教程: https://index.ros.org/doc/ros2/Installation/Dashing/Linux-Development-Setup/ 环境信息: UBUNTU18.04LTS 可选项:安装系统备份和恢复工具timeshift,避免发生灾难性错误后无法恢复,使用方法:链接 修改DNS(有助于避免安装过程中频.原创 2020-08-12 13:29:31 · 1049 阅读 · 0 评论 -
Linux 线程实现机制分析
自从多线程编程的概念出现在 Linux 中以来,Linux 多线应用的发展总是与两个问题脱不开干系:兼容性、效率。本文从线程模型入手,通过分析目前 Linux 平台上最流行的 LinuxThreads 线程库的实现及其不足,描述了 Linux 社区是如何看待和解决兼容性和效率这两个问题的。 一.基础知识:线程和进程 按照教科书上的定义,进程是资源管理的最小单位,线程是程序执行的原创 2015-07-22 22:52:53 · 414 阅读 · 0 评论 -
五个 Linux 下用户空间的调试工具
根据定义,调试工具是那些那些使我们能够监测、控制和纠正其他程序的程序。我们为什么应该用调试工具呢? 在有些情况下,运行一些程序的时候我们会被卡住,我们需要明白究竟发生了什么。 例如,我们正在运行应用程序,它产生了一些错误消息。要修复这些错误,我们应该先找出为什么产生这些错误的消息和这些错误消息从哪里产生的。 一个应用程序可能突然挂起,我们必须了解其他什么进程同时在运行。我们可能还必须弄清楚原创 2015-07-22 22:53:59 · 400 阅读 · 0 评论 -
Linux shell脚本全面学习
1. Linux 脚本编写基础1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。 当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 要使脚本可执行:编译 chmod +x filenam原创 2015-07-22 22:52:11 · 350 阅读 · 0 评论 -
linux常用c函数 进程操作篇
atexit(设置程序正常结束前调用的函数) 相关函数 _exit,exit,on_exit 表头文件 #include 定义函数 int atexit (void (*function)(void)); 函数说明 atexit()用来设置一个程序正常结束前调用的函数。当程序通过调用exit()或从main中返回时,参数function所指定的函数会先被调用原创 2015-07-22 22:51:39 · 435 阅读 · 0 评论 -
linux常用c函数 信号处理篇
alarm(设置信号传送闹钟) 相关函数 signal,sleep 表头文件 #include 定义函数 unsigned int alarm(unsigned int seconds); 函数说明 alarm()用来设置信号SIGALRM在经过参数seconds指定的秒数后传送给目前的进程。如果参数seconds为0,则之前设置的闹钟会被取消,并将剩下原创 2015-07-22 22:51:09 · 576 阅读 · 0 评论 -
Linux系统进程间隔定时器Itimer
所谓“间隔定时器(Interval Timer,简称itimer)就是指定时器采用“间隔”值(interval)来作为计时方式,当定时器启动后,间隔值interval将不断减小。当interval值减到0时,我们就说该间隔定时器到期。与上一节所说的内核动态定时器相比,二者最大的区别在于定时器的计时方式不同。内核定时器是通过它的到期时刻expires值来计时的,当全局变量jiffies值大于原创 2015-07-22 22:53:36 · 2502 阅读 · 0 评论 -
linux常用c函数 文件权限控制篇
access(判断是否具有存取文件的权限) 相关函数 stat,open,chmod,chown,setuid,setgid 表头文件 #include 定义函数 int access(const char * pathname,int mode); 函数说明 access()会检查是否可以读/写某一已存在的文件。参数mode有几种情况组合,R_OK,W_O原创 2015-07-22 22:49:58 · 531 阅读 · 0 评论 -
linux常用c函数 文件操作篇
close(关闭文件) 相关函数 open,fcntl,shutdown,unlink,fclose 表头文件 #include 定义函数 int close(int fd); 函数说明 当使用完文件后若已不再需要则可使用close()关闭该文件,二close()会让数据写回磁盘,并释放该文件所占用的资源。参数fd为先前由open()或creat()所返回原创 2015-07-21 23:00:14 · 406 阅读 · 0 评论 -
linux常用c函数 数据结构及算法篇
crypt(将密码或数据编码) 相关函数 getpass 表头文件 #define _XOPEN_SOURCE #include 定义函数 char * crypt (const char *key,const char * salt); 函数说明 crypt()将使用Data Encryption Standard(DES)演算法将参数key所指的字原创 2015-07-21 22:56:46 · 599 阅读 · 2 评论 -
linux常用c函数 常用数学函数篇
abs(计算整型数的绝对值) 相关函数 labs, fabs 表头文件 #include 定义函数 int abs (int j) 函数说明 abs()用来计算参数j的绝对值,然后将结果返回。 返回值 返回参数j的绝对值结果。 范例 #ingclude main(){ int ansert; answer = abs(-原创 2015-07-21 22:55:30 · 5922 阅读 · 0 评论 -
linux静态库和动态库分析
1.什么是库 在windows平台和linux平台下都大量存在着库。 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。 由于windows和linux的本质不同,因此二者库的二进制是不兼容的。 本文仅限于介绍linux下的库。 2.库的种类 linux下的库有两种:静态库和共享库(动态库)。 二者的不同点在于代码被载入的时刻不原创 2015-07-21 22:52:25 · 448 阅读 · 0 评论 -
linux下检测网卡与网线连通状态
在linux下使用ifconfigl命令能很方便的查看网卡与网线是否连通,运行ifconfig eth0命令大致输出如下:# ifconfig eth0eth0 Link encap:Ethernet HWaddr 00:25:35:68:CC:D6 inet addr:192.168.1.168 Bcast:192.168.原创 2015-07-21 22:45:59 · 857 阅读 · 0 评论 -
编写模块遍历系统中的进程
编写内核模块实现进程的遍历。这个有点类似ps命令了。 源程序:list.c /***************************************** *功能:利用进程链表遍历当前系统中的所有进程 *同时可以打印出进程的相关信息 * * ***************************************/ #include l原创 2015-07-21 22:43:13 · 559 阅读 · 0 评论 -
Linux的mmap文件内存映射机制
在讲述文件映射的概念时, 不可避免的要牵涉到虚存(SVR 4的VM). 实际上, 文件映射是虚存的中心概念, 文件映射一方面给用户提供了一组措施, 好似用户将文件映射到自己地址空间的某个部分, 使用简单的内存访问指令读写文件;另一方面, 它也可以用于内核的基本组织模式, 在这种模式种, 内核将整个地址空间视为诸如文件之类的一组不同对象的映射. 中的传统文件访问方式是, 首先用open系统调原创 2015-07-21 22:39:46 · 366 阅读 · 0 评论 -
C 语言中的 srand 和 rand
大家在写 C/C++ 程序时,难免会遇到要求获取某个范围内的随机数,我查阅了一些资料后,总结如下。本文分两部分,先介绍 C 语言中与随机数相关的两个函数 srand 和 rand,后介绍 C++ 中的 random 库,每一部分最后会给出生成特定范围内的随机数模板供参考。1 C 语言中的 srand 和 rand1.1 实现下面是 VC 的实现,GCC 的实现比 VC转载 2015-08-13 17:15:29 · 1858 阅读 · 0 评论 -
Linux下C编程知识整理
Linux下C编程概要第一个问题,假设我是一个初学者,我需要学习的第一个知识并非C语言本身,而是可供我编辑、编译、验证乃至调试C语言程序的编程环境,如果你没有一个合适的编程环境,那么C语言的学习将是空中楼阁,无从谈起。因此我们的第一个任务便是搭建一个属于自己的编程平台,由于针对Linux编程,我推荐大家直接使用Linux系统,Linux系统有许多发行版,选择一个易用的就行了,比如我转载 2015-07-22 23:31:18 · 1389 阅读 · 0 评论 -
linux fcntl()函数
linux fcntl()函数 功能描述:根据文件描述词来操作文件的特性。 #include int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); [描述]原创 2015-09-14 14:55:21 · 491 阅读 · 0 评论 -
SQLite应用之实例代码
目录一、获取表的Schema信息二、常规数据插入三、高效的批量数据插入四、数据查询一、获取表的Schema信息 1). 动态创建表。 2). 根据sqlite3提供的API,获取表字段的信息,如字段数量以及每个字段的类型。 3). 删除该表。 见以下代码及关键性注释:#include <sqlite3.h>#include...原创 2019-06-05 14:43:08 · 2407 阅读 · 0 评论 -
SQLite剖析之编程接口详解
前言 使用过程根据函数大致分为如下几个过程:sqlite3_open() sqlite3_prepare() sqlite3_step() sqlite3_column() sqlite3_finalize() sqlite3_close() 这几个过程是概念上的说法,而不完全是程序运行的过程,如sqlite3_column()表示的是对查询获得一行里面的数据的列的各个操作...原创 2019-06-05 14:42:24 · 385 阅读 · 0 评论 -
SQLite安装、编译与应用
什么是 SQLite SQLite是一款轻量级的、基于文件的嵌入式数据库,实现自包容、零配置、支持事务的SQL数据库引擎。与其他数据库管理系统不同,SQLite 的安装和运行非常简单,在大多数情况下,只要确保SQLite的二进制文件存在即可开始创建、连接和使用数据库。第一个Alpha版本诞生于2000年5月,直到今天已经成为最流行的嵌入式数据库,包括Google在内的许多公司在其桌...原创 2019-06-05 14:41:28 · 544 阅读 · 0 评论 -
SQLite剖析之C/C++接口
SQLite3是SQLite一个全新的版本,它虽然是在SQLite2的代码基础之上开发的,但是使用了和之前的版本不兼容的数据库格式和API。SQLite3是为了满足以下的需求而开发的:支持UTF-16编码、用户自定义的文本比较方法、可以对BLOBs字段建立索引。SQLite 3.X版的和SQLite2.X版的API非常相似,但是有一些重要的改变需要注意。3.X版的API增加到超过185个,所有A...原创 2019-06-05 14:40:29 · 383 阅读 · 0 评论 -
SQLite剖析之数据类型
许多SQL数据库引擎(除SQLite之外的各种SQL数据库引擎)使用静态、严格的数据类型。对于静态类型,一个值的数据类型由它的容器,即存储这个值的列来决定。SQLite则使用更加通用的动态类型系统。在SQLite中,一个值的数据类型被关联到这个值本身,而不是它的容器。SQLite的动态类型系统向后兼容一般静态类型系统的数据库引擎。在某种意义上,工作在静态类型数据库上的SQL声明也同样能工作在SQL...原创 2019-06-05 14:38:29 · 626 阅读 · 0 评论 -
I/O复用之Select模型
I/O复用之Select模型I/O复用使得程序能够同时监听多个文件描述符,但是,他本身也是阻塞的,并且当一个或多个文件描述符准备就绪时,如果不采用其他措施,程序只能按顺序处理其中的每个文件描述符。如果要使程序能够并行运行,只能使用多进程或多线程的方式。Linux下实现I/O复用的系统调用主要有select、poll和epoll,下面将详细介绍select的系统调用。Select...原创 2019-04-24 14:04:04 · 419 阅读 · 0 评论 -
在map中保存struct,及map的文件输入输出
用函数的方法实现:从map输出到文件,map的value是struct#include#include#include#includeusing namespace std;struct studentID { string name; string address;};studentID MakeStuden转载 2015-11-30 14:57:41 · 2652 阅读 · 0 评论 -
C++11学习总线及相关资料----悲惨了好多天,奉献了!
C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下: [函数对象参数] (操作符重载函数参数) mutable或exception声明 ->返回值类型 {函数体} 可以看到,Lambda主要分为五个部分:[函数对象参数]、(操作符重载函数参数)、mutable或exception声明、->返回值类型原创 2015-10-14 18:39:48 · 2080 阅读 · 0 评论 -
设计模式之单例模式
Recently I've bumped into a realization/implementation of the Singleton design pattern for C++. It has looked like this (I have adopted it from the real life example):// a lot of methods are omitted原创 2015-10-14 18:49:59 · 562 阅读 · 0 评论 -
curl 相关资料总结
Linux下使用curlCurl是Linux下一个很强大的http命令行工具,其功能十分强大。1)读取网页$ curl linuxidc.com">http://www.linuxidc.com2)保存网页$ curl http://www.linuxidc.com > page.html $ curl -o page.htmlhttp://www.linuxidc原创 2015-10-27 16:55:25 · 628 阅读 · 0 评论 -
linux 下关于用户的操作
Linux 的账号与群组管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的, 并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务器主机的账号啦! 在管理 Linux 主机的账号时,我们必须先来了解一下 Linux 到底是如何辨别每一个使用者的! 使用者标识符: UID 与 GID虽然我们登陆 Li原创 2015-10-27 20:11:27 · 1207 阅读 · 0 评论 -
linux 下文件的搜寻(转)
which (寻找『运行档』)[root@www ~]# which [-a] command选项或参数:-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称 分别用root与一般帐号搜寻 ifconfig 这个命令的完整档名[root@www ~]# which ifconfig/sbin/ifconfig 用 root转载 2015-10-27 20:05:05 · 643 阅读 · 0 评论 -
linux 下常用的文件和目录操作命令(转)
cdpwdmkdirrmdirlscprmmvcattacnl morelessheadtailtouch cd (变换目录)我们知道vbird这个使用者的家目录是/home/vbird/,而root家目录则是/root/,假设我以root身份在 Linux系统中,那么简单的说明一下这几个特殊的目录的意义是:[ro转载 2015-10-27 20:06:22 · 1108 阅读 · 0 评论 -
linux vi(vim)常用命令汇总(转)
前言首先介绍一下 vim vi 是 unix/linux 下极为普遍的一种文本编辑器, 大部分机器上都有 vi 有各种变种, 在不同的机器上常用不同的变种软件 其中 vim 比较好用也用得比较广泛 vim 是 Vi IMproved 的缩写, 表示更好的 vi 本文就说些其中比较有用, 比较常用的命令, 若能熟练运用这些命令, 那么会发现编辑文件很大帮助,尤其是做开发的人员,能快速的提高开发效转载 2015-10-27 20:01:00 · 514 阅读 · 0 评论 -
Linux下Socket编程
一 、socket介绍 socket接口是TCP/IP网络的API,socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解socket接口。 socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解socket了。网络的socket数据传输是转载 2015-07-20 15:13:28 · 341 阅读 · 0 评论 -
pthread相关资料整理(1)
1. pthread线程概念Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。与vxworks上任务的概念类似,都是调度的最小单元,都有共享的堆、栈、代码区、全局变量等。 2. 创建线程int pthread_create(pthread_t原创 2015-07-20 15:08:31 · 670 阅读 · 0 评论