C/C++
平时编写C/C++的笔记
非洲蜗牛
这个作者很懒,什么都没留下…
展开
-
如何用C++以管理员身份启动Windows中的应用程序
只想一个以NULL结尾的字符串的指针,指出了动作默认的工作路径,如果值为NULL,就会使用当前的工作路径。最长为32767个字符,系统增加了用于结束的NULL字符,目的是为了把文件和它的参数区分开来,这样在内部执行的时候,原始的字符串就被分成了两个部分。如果之前的lpFile指明了一个可执行文件,该参数是一个指向了以NULL结尾的字符串的指针,指明了要传给这个应用程序的参数。指向一个以NULL结尾的字符串的指针,指出所要执行的动作,可用动词的集合取决与特定的文件或文件夹。转载 2024-04-18 22:45:39 · 456 阅读 · 0 评论 -
Windows利用C++打包压缩文件
【代码】Windows利用C++打包压缩文件。转载 2024-04-18 10:08:35 · 81 阅读 · 0 评论 -
C++ system函数 --- 调用操作系统指令
来自。转载 2024-04-17 17:19:58 · 66 阅读 · 0 评论 -
Vcpkg tutorial - Install C and C++ libraries for Visual Studio 2017 on Windows 10
2.作者此处在C盘事先准备好了一个名为DEV的文件夹,进入这个文件夹,随后在PowerShell中打开这个路径(Open PowerShell window here)。以下内容来自某国外视频教程,为了能够实现离线安装,先观看视频做下记录。3.将下载的Vcpkg解压到C:/DEV中,并改名为vcpkg。转载 2024-04-16 20:26:25 · 51 阅读 · 0 评论 -
Building tools (CMake, MinGW, Visual Studio)
CMake还提供了被称为out-of-source的构建特征,被解释为: 当你构建生成文件时,它们必定会被放在某种地方,in-source构建会将生成的文件放在源代码路径中,而out-of-source构建会把生成的文件放在完全单独的文件夹中,因此源文件路径不会有任何改变。它以某种方式抽象了生成编译指令的过程,并使配置给定项目成为可能,而不管实际的编译器/构建工具是什么。的说法,CMake是一种使用独立于编译器的方法,用于管理软件的构建过程的跨平台且开源的构建系统。因此在修改环境变量时,选择修改系统变量。翻译 2024-04-16 08:47:47 · 40 阅读 · 0 评论 -
C++更改文件名称,在文件名增加字符
此函数参考了来自C语言的。原创 2024-04-03 08:38:29 · 266 阅读 · 0 评论 -
利用Microsoft Visual Studio的C++线程实例
【代码】利用Microsoft Visual Studio的C++线程实例。转载 2024-03-30 00:27:29 · 77 阅读 · 0 评论 -
Windows 10中的线程调度和线程时间片相关函数(C++)
pseudo handle是一个特殊的常量,它被解释成当前线程的句柄,每当需要线程句柄时,调用的线程可以使用句柄表示自己。如果对象的状态为非信号状态,则调用线程进入等待状态,直到对象被信号或超时间隔结束。需要关联的掩码的进程的句柄。如果函数成功,返回值是非零的,并且函数将lpProcessAffinityMask和lpSystemAffinityMask指向的变量设置为适当的关联掩码。这是对象的句柄,如果这个句柄在等待仍然挂起时被关闭,则该函数的行为未定义。如果此参数为NULL,线程标识符是不会返回的。转载 2024-03-30 00:18:24 · 203 阅读 · 0 评论 -
How to create a new thread and wait for it in Windows 10 by C++?
与ChatGPT的对话。转载 2024-03-28 15:49:52 · 45 阅读 · 0 评论 -
没有与参数列表匹配的构造函数“cv::VideoWriter::VideoWriter”实例
以后用Visual Studio开发时再遇到这种情况,就要注意,问题可能不在第一个参数,而在后面的参数上。原创 2024-03-27 18:59:49 · 195 阅读 · 0 评论 -
如何用C++生成字符串形式的当前时间戳
【代码】如何用C++生成字符串形式的当前时间戳。转载 2024-03-27 11:02:09 · 136 阅读 · 0 评论 -
Create & Wait for Thread in C++
【代码】Create & Wait for Thread in C++转载 2024-03-26 14:49:48 · 26 阅读 · 0 评论 -
如何在Linux上制作动态链接库
本文翻译自: How dynamic linking for modular libraries works on Linux放到Ubuntu上试试行不行。1.Linker一个Linker是一种命令,将许多程序片段联系在一起,并且识别针对他们的内存分配。一个linker的功能包括:(1) 集成程序的所有部分(2) 恢复内存,以至于程序能运行在新的内存组织下。(3) 解析符号引用(4) 建立新的内存组织以至于所有的程序能组织在一起。2.创建对象文件首先,创建头文件mymath.h:(关于如翻译 2024-03-17 21:32:28 · 68 阅读 · 0 评论 -
C++遍历文件夹中文件并确定文件是否被其他进程占据
最近,有种感想,使用Python时,开了太多的线程或进程。可能它们当中有的就会因为分不到资源而迟迟无法运转。当用WPS打开这3个文档时,文件是可以被修改的,这时我自己的程序用CreateFileA打不开它们。更新: 突然发现自己忘了加上一个关闭句柄的操作。(在基于C++ 11的基础上)转载 2024-03-13 07:50:32 · 184 阅读 · 0 评论 -
利用C++遍历文件夹下面的文件
使用第二段代码时可能会出现: “dirent.h”: No such file or directory。该程序运行后所遍历出的ent->d_name是文件名,并不是完整的文件路径。更新: 想用Python遍历怎么办?转载 2024-02-28 19:34:41 · 255 阅读 · 2 评论 -
Walkthrough: Create and use your own Dynamic Link Library (C++)
为了调用DLL输出的函数或访问DLL输出的数据,在编译时间客户端源代码必须有可用声明。DLL在一个导入库(一个包含如何查找函数和数据的信息的文件)中提供这些信息,而不是实际的代码。不论是你自己的或来自一个第三方,你的客户端APP项目需要一些信息以便使用DLL。另外,在客户端项目中设置库路径,以包含来自DLL项目的DLL导入库。最后,将构建的DLL从DLL项目复制到您的客户机构建输出目录中。Windows在加载时或运行时将应用程序中的导入连接到DLL中的导出,而不是在链接时连接它们。DLL使用C调用规约。翻译 2024-02-24 21:42:11 · 50 阅读 · 0 评论 -
C语言读MP4格式视频文件
关于这个fread( )函数,参考。关于fwrite函数,参考。转载 2024-02-16 10:49:12 · 348 阅读 · 0 评论 -
读者写者问题与生产者消费者问题相关题目编码实现(Linux C)
2013年操作系统第2题:编码实现:2015年操作系统第2题:编码实现:2016年操作系统第10题:编码实现:2017年操作系统第10题:编码实现:2018年操作系统第15题:编码实现:原创 2021-12-03 02:33:29 · 1026 阅读 · 0 评论 -
Qt解析Json文件
参考文献:使用Qt读写JSON文件(二)——从文件解析JSON代码实现如下:#include<QDir>#include<QFile>#include<QJsonArray>#include<QJsonDocument>#include<QJsonObject>#include<QJsonParseError>#include<QJsonValue>#include<QSysInfo>#inc原创 2021-05-19 16:53:10 · 245 阅读 · 0 评论 -
cannot convert ‘......‘ to ‘void*‘ for argument ‘1‘ to ‘void free(void*)‘
出现这种情况的可能原因是你所要free掉的这个压根就不是一个指针类型的数据原创 2021-05-07 21:42:04 · 3456 阅读 · 0 评论 -
判断一个链表是否有环并返回入口
在这个算法中,如果没有环就会返回NULL://基本数据类型定义:typedef int ElemType;typedef struct LNode{ ElemType data; struct LNode* next;}LNode,*LinkList;//判断一个链表是否有环并找到其入口#define MaxSize 100LNode* FindRange(LinkList &L){ LNode *p=L; int i=0; LNode* array[MaxSize];原创 2021-04-25 12:10:20 · 136 阅读 · 0 评论 -
利用栈实现表达式求值(含C/C++实现)
中缀表达式转后缀表达式的算法规则:先将这个用C语言实现一下:原创 2021-04-19 13:45:08 · 8409 阅读 · 3 评论 -
警告:comparison between signed and unsigned integer expressions [-Wsign-compare]
警告的意思是一个无符号数整型与有符号整型最好不要比较。i是有符号整型,histogram.size()是无符号整型,所以会产生这个警告。解决方法:for (unsigned int i = 0; i != histogram.size(); ++i)最省力的,将i改成unsigned int 就不会产生这个警告了...转载 2021-04-17 13:12:12 · 1103 阅读 · 0 评论 -
栈实现中缀表达式转后缀表达式(C/C++语言)
代码如下://用于判断运算符优先级的高低,优先级高于或等于就返回true,否则为false bool Priority(char a,char b){ if((a=='+'||a=='-')&&(b=='+'||b=='-'||b=='*'||b=='/')) { return true; } else if((a=='*'||a=='/')&&(b=='*'||b=='/')) { return true; } return false;}原创 2021-04-16 20:07:18 · 587 阅读 · 0 评论 -
利用栈实现括号匹配(C语言实现)
毫无疑问,这部分的知识跟编译原理是在一起的。括号的匹配包括数量和形状上的要求,保证左右括号成双成对。计算机是如何检查括号匹配的:下面这几种情况会被判定为是非法的:(1)括号形状不匹配,则后面的就都不用看了:(2)出现了一个单身的右括号,也就是栈空了,没有左括号出来和它配对了:(3)出现了左括号单身的情况(都扫描完了栈依然还没有空):总体思路:编程实现(基于顺序栈)://这次实现中涉及到的括号只包括小中大三种#include<stdio.h>#include<原创 2021-04-11 13:08:26 · 6951 阅读 · 1 评论 -
一种单链表递增排序算法(C语言)
LinkList BiggerSort(LinkList &L){ LNode* pre=L,*k=L,*minpre=L,*q; while(pre->next->next) { while(pre->next) { if(pre->next->data<minpre->next->data)minpre=pre; pre=pre->next; } q=minpre->next; minpre-&g原创 2021-04-10 20:41:48 · 879 阅读 · 0 评论 -
得到并删除单链表中的最小值(C语言实现)
void FindMinDelete(LinkList &L,ElemType &e){ LNode *minp=L->next,*minpre=L; while(minpre->next) { if(minpre->next->data<minp->data)minp=minpre->next; minpre=minpre->next; } minpre->next=minp->next; e=minp-&g原创 2021-04-10 19:36:50 · 493 阅读 · 0 评论 -
单链表的反转操作(C语言实现)
该算法使用了类似于头插法的思想:void ReversePrint(LinkList &L){ LNode *p=L,*q; for(;p->next!=NULL;p=p->next); while(L->next!=p) { q=L->next; L->next=q->next; q->next=p->next; p->next=q; } for(q=L-&原创 2021-04-10 19:05:43 · 240 阅读 · 0 评论 -
kzalloc()函数
给 kmalloc 的第一个参数是要分配的块的大小. 第 2 个参数, 分配标志, 非常有趣, 因为它以几个方式控制 kmalloc 的行为最一般使用的标志, GFP_KERNEL, 使用 GFP_KENRL 意味着 kmalloc 能够使当前进程在少内存的情况下睡眠来等待一页.GFP_KERNEL 不一直是使用的正确分配标志; 有时 kmalloc 从一个进程的上下文的外部调用. 例如, 这类的调用可能发生在中断处理, tasklet, 和内核定时器中. 在这个情况下, 当前进程不应当被置为睡眠, 并转载 2021-04-02 14:58:29 · 909 阅读 · 0 评论 -
构造带头结点的循环双链表并判断其是否对称(C语言实现)
#include<stdio.h>#include<stdlib.h>#define ElemType inttypedef struct DNode{ ElemType data; struct DNode *next,*prior;}DNode,*DinkList;//构造一个带头结点的循环双链表 DinkList List_HeadInsert(DinkList &L){ DNode *s,*r; int x; L=(DinkList)mal原创 2021-04-01 09:38:02 · 416 阅读 · 2 评论 -
一种在链表中使用的冒泡排序算法(递减排序)
C语言实现:void BubbleSort(LinkList &L){ LNode *s,*r=NULL; int temp; while(1) { if(L->next==r)return; for(s=L->next;s->next!=r;s=s->next) { if(s->data<s->next->data) { temp=s->dat原创 2021-03-25 22:52:06 · 730 阅读 · 0 评论 -
多线程通信
任务内容及目的:![实现代码:procon.c:#include<stdio.h>#include<pthread.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#include<sys/stat.h>#include<sys/types.h>#include<fcntl.h>#include<sys/select.原创 2021-03-17 10:11:56 · 53 阅读 · 0 评论 -
pow函数在强制类型转换上的坑
对C语言pow函数的结果强制转换成为int类型,有可能会产生一个混乱的数:测试代码:#include<stdio.h>#include<math.h>int main(){ printf("%d\n",(int)(pow(10,12))); printf("%f\n",pow(10,12)); return 0;}运行结果:21474836471000000000000.000000那么这个2147483647是什么呢?百度的解释如下:原创 2021-02-18 07:36:37 · 1089 阅读 · 1 评论 -
qsort的回调函数的一个坑点
在qsort函数中,对于回调函数的return哪一行,下面这两个语句return (*(mooncake*)b).unit>(*(mooncake*)a).unit;return (*(mooncake*)b).unit-(*(mooncake*)a).unit;如果((mooncake)b).unit和((mooncake)a).unit的差值是纯小数,那么回调函数使用第二种return语句返回的就是0;...原创 2021-02-17 07:06:28 · 157 阅读 · 0 评论 -
在主函数内使用宏定义
之前习惯于在主函数外面使用宏定义,但实际上主函数内也可使用,例:#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<stdint.h>#include<string.h>#include<assert.h>int main(){ char g[9]={'9','8','7','2','1','5','6','3','4'}; #defi原创 2021-02-15 11:08:35 · 2267 阅读 · 0 评论 -
C语言中的CHAR_BIT
关于这个CHAR_BIT,博客园上的一篇文章中说它表示每个字节的位数,我在Ubuntu上试了一下,输出值为8原创 2021-02-15 08:24:16 · 1872 阅读 · 0 评论 -
const void *a 与 void *const a 的差别
const void *a这是定义了一个指针a,a能够指向随意类型的值,但它指向的值必须是常量。在这样的情况下,我们不能改动被指向的对象,但能够使指针指向其它对象。比如:const void *a;a=0x123;//是编译通只是的,由于a中放的是个const值。const值是不能被改变的。const int m=1; const int n=2;a=&m; a=&n;//编译能够通过。void* const a这是定义了一个const指针a。a能够指向随转载 2021-02-14 06:37:35 · 1117 阅读 · 1 评论 -
qsort函数回调函数返回值为0的情况
由PAT乙级1020题所引发:https://pintia.cn/problem-sets/994805260223102976/problems/994805301562163200这是某个人的解题代码:#include <stdio.h>#include <stdlib.h>#define MAXN 1001/*定义月饼结构体为mooncake*/typedef struct { float stock; //库存。 float price; //每原创 2021-02-13 07:30:21 · 596 阅读 · 0 评论 -
memset函数能否作用于int数组?
参考文献:https://blog.csdn.net/qq1169091731/article/details/51934504从该文章来看,作者的意思是否定的;转载 2021-02-07 07:45:59 · 209 阅读 · 0 评论 -
warning: implicit declaration of function ‘gets’; did you mean ‘fgets’?
转载一篇关于C的字符串的文章转载 2021-02-06 07:12:42 · 2680 阅读 · 0 评论