c/c++
小盼你最萌哒
这个作者很懒,什么都没留下…
展开
-
C语言字符串解析&=表达式
项目中传输变量,使用=连接属性的变量名和变量值,使用&连接各个不同的属性,使用c语言写一个解析函数:#include <stdio.h>#include <stdlib.h>int main(){ char ss[]="$cmd=setsensortime&sensor_id=value&sample_intv=value&upload_intv=value&plus_intv=value"; size_t lengt原创 2020-12-29 15:17:45 · 691 阅读 · 1 评论 -
使用逻辑或应该注意的短路现象
短路运算符一般有:&&、||,其原理是:当有多个表达式时,左边的表达式值可以确定结果时,就不再继续运算右边的表达式的值。以如下代码为例,本意是先执行di0_init和di1_init两个函数,再根据其返回值确定是否创建线程操作:static int di_init(){ if (di0_init() == RT_EOK || di1_init() == RT_EOK) //任意一个通道初始化成功则需要上传数据 { rt_thread_t tid =原创 2020-09-20 16:08:36 · 450 阅读 · 0 评论 -
结构体指针 比较函数
通常情况下,c语言喜欢使用指针而不是拷贝的方式进行参数传递,提高运行效率。如图可以知道,people类型的数组p,存储在地址未0x402000开始的地方,对于数组成员可以使用&p[i]的方式找到其地址,对于指针的话,其本身就是地址。那么最简单的一个对象比较函数,就是比较结构体对象的存储地址,以实现结构体对象的查找。...原创 2020-08-20 16:16:13 · 793 阅读 · 0 评论 -
strncpy使用中需要注意的问题
在使用c语言进行项目开发的过程中,使用strncpy对字符串进行复制操作,因为该函数可以保证拷贝过程中内存不越界,但是该函数在使用过程中需要注意,拷贝的过程中是不会拷贝最后的结束符的。如下图所示,在使用strncpy进行拷贝之前,从flash中读出来的auth_info数组是正常的。通过malloc开辟内存的onenet_info结构体内容是随机的。但是拷贝的时候,虽然拷贝了字符串长度的内容,但是并没有在后面补字符串结束符标志,导致了实际使用的auth_info从sn999变成了sn999N。原创 2020-08-15 18:04:51 · 1402 阅读 · 0 评论 -
freopen函数 输入输出重定向
平时我们调试的时候,总是要一个个样例输入,再看输出。 但是如果我们输入量比较大的时候,虽然可以用复制功能,但是如果输出内容太多,屏幕显示不了,对于我们调试就很不方便。这里介绍一下freopen函数的使用。下面先看一个样例: 输入10个数,再输出10个数。 一般我们会这样写:#include"stdio.h"int main(){ int n=10; int a[20];原创 2015-08-11 11:29:07 · 1064 阅读 · 0 评论 -
new 与malloc 的区别
学了c大家都习惯用malloc申请内存。当看到一些c++的代码用new会有疑惑,new和malloc的区别是什么。malloc是c里申请内存的方法,搭配free释放内存。 new是c++里申请内存的方法,搭配delete释放内存。 虽然这两句话好像并没有什么用。假如我们有个结构体:struct node{ int prefix; node* next[KIND];};现在我们原创 2015-08-03 10:40:11 · 665 阅读 · 0 评论 -
vector 用法详解
vector 常见的几个函数:v.empty(); //判断容器是否为空v.size(); //求容器里面元素的个数v.push_back(value); //把新元素value压入容器v.pop_back(); //删除容器末尾的元素v.insert(pos,value);原创 2015-08-03 13:07:25 · 453 阅读 · 0 评论 -
map 用法详解
和vector一样,map也可以看作一种特殊的数组,vector是不限定长度的数组,map是可以不开中间位置元素空间的数组。map常见的函数:m.insert(pair) //插入一对数据m.size() //返回容器中元素的个数m.count(key) //返回key键是否出现过m.find(key) //寻找key键元素,返回到迭代器m.erase(pos)原创 2015-08-06 20:42:56 · 644 阅读 · 0 评论