C语言
是专家不是砖家
这个作者很懒,什么都没留下…
展开
-
linux网络传输float类型,大小端转换问题
linux 网络传输 tcp/ip 大小端转换 htonl ntohl原创 2023-12-19 16:56:08 · 523 阅读 · 0 评论 -
pthread_cancel引起程序段错误
linux pthread_create创建线程以后,如果使用pthread_detach分离了线程,后面如果想用pthread_cancel来取消线程的话,线程中最好添加一个pthread_testcancel来指定线程退出点。子线程不能在其他地方关闭或者自己退出,如果子线程已经退出了,这种情况下,调用pthread_cancel来关闭子线程的话,程序就会出现段错误。...原创 2022-06-30 10:59:29 · 1108 阅读 · 0 评论 -
TCP过程中,网络断开问题解决办法
最近工作过程中,遇到了在TCP建立好连接以后,发送和接收过程中,网络断开引起的socket无法关闭的问题。ps:TCP的发送和接收都使用的是阻塞模式最开始想到的解决办法是设置发送和接收的超时时间,这样超时时间到了,发送和接收都会返回,socket就能正常关闭了。但是设置超时时间会引起其他问题。1、设置发送超时以后,客户端(上位机)会出现,Interrupted system call问题,产生原因是send函数在阻塞模式下,一定要等到有可用空间将send发送的数据拷贝到发送缓冲中,但是超时了,还没发送,就出原创 2022-06-29 14:56:27 · 3557 阅读 · 0 评论 -
求两个数的平均值
C语言求两个数的平均值原创 2022-03-28 19:15:12 · 333 阅读 · 0 评论 -
leecode题解 [599. 两个列表的最小索引总和]
C语言解leecode原创 2022-03-14 14:50:24 · 769 阅读 · 0 评论 -
保存音频到文件
static int save_audio(int seq, char *audio_buff, int len) { char file_name[64] = {0}; int ret = 0; snprintf(file_name, sizeof(file_name), "/tmp/audio_file_%d", seq); FILE *fp = fopen(file_name, "w+"); if (!fp) { return -1; } ret = fwr.原创 2022-02-10 19:19:10 · 2090 阅读 · 0 评论 -
vsnprintf的陷阱
今天修改bug,发现别人写的代码,vsnprintf使用的不对导致出现bug了。int vsnprintf(char* str, size_t size, const char* format, va_list ap);函数说明1. char *str [out],把生成的格式化的字符串存放在这里.2. size_t size [in], str可接受的最大字符数 [1] (非字节数,UNICODE一个字符两个字节),防止产生数组越界.3. const char *format [in原创 2021-07-28 22:33:31 · 4030 阅读 · 0 评论 -
leecode 34. 在排序数组中查找元素的第一个和最后一个位置
1.给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回[-1, -1]。进阶:你可以设计并实现时间复杂度为O(log n)的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8输出:[3,4]示例2:输入:nums = [5,7,7,8,8,10], target = 6输出:[-1,-1]示例 3:输入:n...原创 2021-07-16 14:38:04 · 94 阅读 · 0 评论 -
C语言二分查找法
int binary_find(int *array, int array_size, int target) { int low = 0; int high = array_size - 1; int mid = 0; int midValue = 0; while (low <= high) { mid = (low + high) / 2; midValue = array[mid]; .原创 2021-07-16 10:49:11 · 117 阅读 · 0 评论 -
C语言 指针数组
需要给一级指针赋值的话,就需要二级指针去取一级指针的地址,然后赋值。#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAX_CLIENT 4typedef struct { int *array[MAX_CLIENT]; int a; int b;}DATA_T;static DATA_T *date_p = NULL;int *malloc_array(in原创 2021-06-09 20:33:47 · 87 阅读 · 0 评论 -
C语言 基数排序算法
int radixSort(int* nums, int numsSize) { if (numsSize < 2) { return 0; } int exp = 1; int buf[numsSize]; memset(buf, 0, sizeof(buf)); int maxVal = nums[0]; for (int i = 1; i < numsSize; ++i) { maxVal = fma...原创 2020-11-26 17:55:43 · 282 阅读 · 1 评论 -
力扣 925. 长按键入
的朋友正在使用键盘输入他的名字name。偶尔,在键入字符c时,按键可能会被长按,而字符可能被输入 1 次或多次。你将会检查键盘输入的字符typed。如果它对应的可能是你的朋友的名字(其中一些字符可能被长按),那么就返回True。示例 1:输入:name = "alex", typed = "aaleex"输出:true解释:'alex' 中的 'a' 和 'e' 被长按。示例 2:输入:name = "saeed", typed = "ssaaedd"输出:false...原创 2020-10-21 15:02:18 · 223 阅读 · 0 评论 -
C语言 获取当前日期的昨天,前天,明天,后天方法
//获取日期方法time_t timep;struct tm *p;time(&timep);timep -= 24*60*60*0; //当前日期timep -= 24*60*60*1;//昨天日期,减去一天的秒数timep -= 24*60*60*2;//前天日期,减去2次一天的秒数timep += 24*60*60*1;//明天日期,加上一天的秒数timep += 24*60*60*2;//后天日期,加上2次一天的秒数p = localtime(&timep.原创 2020-10-19 18:22:59 · 3563 阅读 · 0 评论 -
844. 比较含退格的字符串
给定 S 和 T 两个字符串,当它们分别被输入到空白的文本编辑器后,判断二者是否相等,并返回结果。 # 代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。示例 1:输入:S = "ab#c", T = "ad#c"输出:true解释:S 和 T 都会变成 “ac”。示例 2:输入:S = "ab##", T = "c#d#"输出:true解释:S 和 T 都会变成 “”。示例 3:输入:S = "a##c", T = "#a#c"输出:true解释:S 和.原创 2020-10-19 17:11:24 · 194 阅读 · 0 评论 -
力扣 701. 二叉搜索树中的插入操作
给定二叉搜索树(BST)的根节点和要插入树中的值,将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据保证,新值和原始二叉搜索树中的任意节点值都不同。注意,可能存在多种有效的插入方式,只要树在插入后仍保持为二叉搜索树即可。 你可以返回任意有效的结果。给定二叉搜索树: 4 / \ 2 7 / \ 1 3和 插入的值: 5你可以返回这个二叉搜索树: 4 / \ 2 ...原创 2020-09-30 17:54:13 · 89 阅读 · 0 评论 -
235. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树:root =[6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8输出: 6解释: ...原创 2020-09-27 18:25:46 · 78 阅读 · 0 评论 -
C语言 力扣题解 106. 从中序与后序遍历序列构造二叉树
106 根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-an...原创 2020-09-25 17:42:00 · 491 阅读 · 0 评论 -
window文件换行符自动改变的问题
最近用到c读取文件,文件内容大概就是这样的。读取文件的时候需要去掉每行的换行符。114.114.114.114time-ios.apple.comapp.migc.xiaomi.comy.qq.comdl.stream.qqmusic.qq.com\n(0a)\r\n(0d0a)1、用fgets读取文件,因为fgets会读取换行符,去掉换行符以后发现还是不对,最后一个字原创 2017-03-31 14:53:14 · 672 阅读 · 0 评论 -
C语言结构体中内存对齐的问题
最近做手动socket发送和接收dns报文处理。 在处理返回的报文的时候,遇到一个结构体内存对齐的问题,导致报文解析不对。dns响应报文格式如下,具体详细自己百度了解。 为了直接处理响应报文,我定义了如下结构体。“` typedef unsigned int U32; typedef unsigned short U16; typedef unsigned char U8;typede原创 2017-03-30 17:13:59 · 427 阅读 · 0 评论 -
sscanf用法技巧
最近群里有人问,char *str="aa,bb,cc,dd,ee,ff"; 怎么获取bb,cc,一般都会想到strtok来截取字符串,然后拼接。但是其实sscanf函数就能实现了,而且简单,一开始我用sscanf(str,"%s,%s,%s,%s,%s,%s");发现没有,每个获取的都是aa,bb,cc,dd,ee,ff,不是单独的aa,最后发现sscanf里面可以用正则表达式,限原创 2017-02-23 15:26:41 · 350 阅读 · 0 评论 -
回文字符串C语言判断函数
C语言判断字符串是否为回文原创 2016-11-24 09:21:16 · 3208 阅读 · 3 评论