C
文章平均质量分 55
呼哈哈呼
人生是场马拉松
展开
-
C程序解析命令行参数
getopt.h 文件中包含了处理程序命令行参数的函数, 可以减轻处理argv 的负担.一般, main函数的调用方式是 int main(int argc, char *argv[]) 或者 int main(int argc, char **argv).agrc 指示函数参数个数, 包括程序名; agrv[] 则存储各个参数, 其中argv[0]是函数名.参考:http://ww...原创 2018-09-20 15:12:06 · 579 阅读 · 0 评论 -
出现段错误的情况汇总
整理C语言程序出现段错误segment fault的几种常见原因原创 2018-09-20 15:11:40 · 7840 阅读 · 0 评论 -
freetype描边和半透明实现
可以参考官网的另外一个c++实现的版本 : https://www.freetype.org/freetype2/docs/tutorial/example2.cpp 我把它转化为C代码如下: #include <stdio.h>#include <string.h>#include <math.h>#include <stdlib...原创 2018-07-09 19:56:06 · 4469 阅读 · 2 评论 -
C字符串处理函数
字符串复制:char *strdup(char *str); 将字符串str 复制到一个副本中,返回副本的地址;char *profile;strdup(profile); 以特定格式拼接字符串:如下例, 将ffmpath和ffmname 拼接成ffmpath/ffmname的格式, 存入到output中.snprintf(output, sizeof(output),...原创 2018-09-18 10:07:07 · 190 阅读 · 0 评论 -
printf相关函数
int sprintf( char *buffer, const char *format, [ argument] … );sprintf 返回以format为格式argument为内容组成的结果被写入buffer 的字节数,结束字符‘\0’不计入内。即,如果“Hello”被写入空间足够大的buffer后,函数sprintf 返回5。 int snprintf(char *st...原创 2017-08-30 11:31:57 · 578 阅读 · 0 评论 -
I/O操作
这里只讨论不带缓冲的I/O, 就是说每个read 和write都调用内核中的一个系统调用.函数如下:#include &amp;amp;amp;amp;amp;amp;lt;fcntl.h&amp;amp;amp;amp;amp;amp;gt;int open(const char *path, int oflag, ... /* mode_t mode */ );int openat(int fd, const char *path, int oflag,原创 2018-11-09 16:15:42 · 338 阅读 · 0 评论 -
用opencv2的C api 给图片画矩形框
使用opencv-3.4.6, Ubuntu系统。步骤:安装opencv,过程可以参考: https://docs.opencv.org/master/d7/d9f/tutorial_linux_install.html编程opencv-3.4.6的官方例子都是用c++代码编写的,但是由于项目需要在c代码中调用opencv库,所以这里使用opencv 的c接口。 所有的C api 都可...原创 2019-08-13 16:12:11 · 1187 阅读 · 0 评论 -
C语言从字符串中提取数字
利用正则表达式:参考:http://blog.csdn.net/yangbingzhou/article/details/51352648#include <regex.h> char tmpbuf[128] = {0}; char buffer[128] = {0}; char sizebuf[30] = {0}; int ret = 0, res = 0;...原创 2018-09-18 10:16:11 · 8291 阅读 · 1 评论 -
ubus资料收集
链接:原理介绍: openwrt中使用ubus实现进程通信 点击打开链接示例: [openwrt] ubus实现进程间通信举例 点击打开链接原创 2018-01-16 11:06:18 · 306 阅读 · 0 评论 -
用sigaction( )处理信号
sigaction函数的功能是检查或(/并)修改与指定信号相关联的处理动作.建议使用sigaction, 而不是signal函数, 后者较老,不可靠.#include int sigaction( int signo, const struct sigaction *restrict act, struct sigaction *restrict oact);返回值:若成功则返回0,若原创 2017-11-10 20:42:20 · 1101 阅读 · 0 评论 -
C语言attribute常用属性整理
attribute可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。attribute语法格式为:attribute((attribute))注意: 使用attribute的时候,只能函数的声明处使用attribute.参考:http://blog.csdn.net/be原创 2017-09-25 15:00:43 · 1120 阅读 · 0 评论 -
C内存管理相关函数
void *calloc(int num, int size);在内存中动态地分配 num 个长度为 size 的连续空间,并将每一个字节(共num*size 个)都初始化为 0。void *malloc(int num); 在堆区分配一块指定大小的内存空间,用来存放数据。这块内存空间在函数执行完成后不会被初始化,它们的值是未知的。void *realloc(void *a原创 2017-08-30 10:54:59 · 254 阅读 · 0 评论 -
小函数工具库
1. 判断机器大小端.#include #include static int isBigEndian(void) { union { int number; char s; } test; memset(&test, 0, sizeof(test)); test.number = 0x01000002; if (test.s == 0x01){ printf("原创 2017-11-13 21:17:57 · 167 阅读 · 0 评论 -
linux串口通信编程
在linux下, 串口也被当做一个文件来使用, 所以串口传输数据实际上也就是对文件进行read/write操作.UART串口基本知识:一般, 串口至少有三根线: 地线GND, 接收线RX和发送线TX. 有的开发板还可能把控制线CTS/RTS也引出来.串口查看方式: 在PC端, 如果用USB口连接, 一般显示为/dev/ttyUSBx, 其中x为0, 1, 2...在原创 2017-11-10 15:56:51 · 1346 阅读 · 0 评论 -
文件操作相关
ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count);sendfile()是作用于数据拷贝在两个文件描述符之间的操作函数.这个拷贝操作是内核中操作的,所以称为"零拷贝".sendfile函数比起read和write函数高效得多,因为read和write是要把数据拷贝到用户应用层操作.参考: http://b原创 2017-11-21 15:19:14 · 130 阅读 · 0 评论 -
c编程错误集
1. 使用read函数没有判断实际读到的字节数例如int len = read(fd, data, size);这里, len的长度不一定就是你实际读到的字节数. 如果你是读串口数据, 当串口传输比较慢时, 就可能出现数据还没准备好的情况.所以最好将实际读取到的数据长度len与你预期的长度做个对比. 如果还没读完, 则循环读取剩余的数据,直到全部读完.2. 直接读取某个地址原创 2017-11-13 20:09:44 · 417 阅读 · 0 评论 -
coding style 检查 错误/警告集
检查某个源文件的coding style检查工具: checkpatch.pl检查方法: checkpatch.pl --no-tree --no-signoff -f filename.cERROR1. do not initialise statics to NULL类似的还有 do not initialise statics to 0原因: 将一个静态变量赋值为0原创 2017-11-23 18:59:24 · 3143 阅读 · 0 评论 -
条件编译--从menuconfig编译选项到源文件
这里所描述的条件编译是这样一种需求: 在make menuconfig里选择编译条件项, 编译的时候根据配置结果,选择不同的编译方法, 最后代码执行的时候就会根据配置选项执行不同的动作.例如,我想在make menuconfig配置菜单栏中增加一个配置选项,用于指示是否使用"疯狂模式".如果是,就天马行空, 如果不是,就一本正经. 下面就按照上述顺序介绍实现过程.1. 修改Kconfig,原创 2017-12-27 09:25:06 · 723 阅读 · 0 评论 -
c程序gcc编译警告汇总
warning: control reaches end of non-void function它的意思是:控制到达非void函数的结尾。就是说你的一些本应带有返回值的函数到达结尾后可能并没有返回任何值。这时候,最好检查一下是否每个控制流都会有返回值。declaration of ‘dst’ shadows a global declaration它的意思是:变量dst 跟全局变量重名,...原创 2019-08-26 14:31:20 · 1257 阅读 · 0 评论