![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
以前吃不胖丶
在变秃的同时一定要变强
展开
-
C语言二维数组作为形参传递问题
问题今天想用一个二维字符串数组保存字符串,在参数传递过程中发现返回的结果不对,上网一搜,发现二维数组作为形参传递不像一维数组那么简单,请看以下详细分析。异常代码:int StrCut(char* pinput, char **ppOut){ char *p = NULL; int count = 0; if (NULL == pinput) { return -1; } printf("input:%s\n", pinput); p = strtok(pinput, "/"原创 2021-03-15 15:33:34 · 924 阅读 · 0 评论 -
cJSON 更新键值及对象
使用cjson过程中,有的时候只需要更新整个json对象中的部分数据,cjson中提供了这样的接口,针对以下两个接口,给出使用示例。CJSON_PUBLIC(void) cJSON_ReplaceItemInArray(cJSON *array, int which, cJSON *newitem);CJSON_PUBLIC(void) cJSON_ReplaceItemInObject(cJSON *object,const char *string,cJSON *newitem);一、更新键值原创 2021-03-05 13:06:50 · 6693 阅读 · 5 评论 -
C语言按子串分割字符串
C语言按子串分割字符串一、按字符分割字符串C语言提供了一个按字符分割字符串的库函数char *strtok(char *str, const char *delim)分解字符串 str 为一组字符串,delim 为分隔符。参数str – 要被分解成多个小字符串的字符串。delim – 分隔符。返回值该函数返回被分解的第一个子字符串,如果没有可检索的字符串,则返回一个空指针。通过对改函数封装,获得按字符分割字符串的函数:/* 按字符分割 src 源字符串的首地址(buf的地址)原创 2021-02-25 09:53:21 · 3316 阅读 · 0 评论 -
C语言单向链表练习
C语言单向链表练习功能:实现链表数据的增删改查#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>/*在makefile中添加编译时间,可以在c代码中以宏的形式调用CT = $(shell date +"%Y-%m-%d %H:%M:%S")CTFLAG = -D _COMPILE_TIME="\"$(CT)"\"$(CC) $(CT原创 2021-02-04 19:17:30 · 211 阅读 · 0 评论 -
cJson数组的生成与解析
cJson数组的生成与解析cJosn官方源码地址:https://sourceforge.net/projects/cjson/使用json偶尔会遇到数组,每次都要去查相关函数,去解析或者生成,在此做一次记录,方便以后使用。按照我自己的使用习惯,根据数组元素的不同,把数组分成了三种,一般数组,嵌套数组和元素为包含多条数据的json对象的数组。生成相关函数一般数组/* These utilities create an Array of count items. */CJSON_PUBLIC(原创 2021-01-05 15:27:28 · 20029 阅读 · 4 评论 -
C语言json格式校验
C语言json格式校验最近用到json格式数据传输信息,在C语言中使用cjson解析json字符串,若json格式不正确,会使整个进程直接挂掉。想到能否在解析前先进行格式校验,通过后再解析,查找资料,网上有现成源码,网址:http://www.json.org/JSON_checker/主要用到两个文件JSON_checker.c和JSON_checker.h,具体用法可以参考main.c。这里参考了博客:C语言如何检测json格式的数据合法性 中的用法,并加以改进。在官网中提供了json检查的测试文原创 2020-12-30 16:25:52 · 2255 阅读 · 2 评论 -
C语言大小端问题
C语言大小端问题int main(){ /* 我的第一个 C 程序 */ int a = 1; /* char *p = &a; int i = 0; for(i = 0; i < sizeof(a); i++) { printf("[%p][%d][%x]\n",p, i, *p++); } printf("%s \n", isBigEndian() ? "big" : "small"); */ int num = 202008210;原创 2020-12-16 20:52:19 · 581 阅读 · 0 评论 -
C语言处理不确定个数参数
C语言处理不确定个数参数C语言没有像C++中函数重载功能,对于不确定参数个数的函数,需要通过va_list实现参数的提取。一、概念va_list 是在C语言中解决变参问题的一组宏,所在头文件:#include <stdarg.h>1)va_list在头文件中的定义为:#ifdef _M_ALPHAtypedef struct { char *a0; /* pointer to first homed integer argument */原创 2020-12-15 19:32:12 · 2719 阅读 · 0 评论 -
C语言实现GB2312和UTF8之间的编码转换
C语言实现GB2312和UTF8之间的编码转换GB2312GB2312编码适用于汉字处理、汉字通信等系统之间的信息交换,基本集共收入汉字6763个和非汉字图形字符682个。GB2312中对所收汉字进行了“分区”处理,字符集分成94个区,每区含有94个汉字/符号,这种表示方式也称为区位码。01-09区为特殊符号。16-55区为一级汉字,按拼音排序。56-87区为二级汉字,按部首/笔画排序。10-15区及88-94区则未有编码。举例来说,“啊”字是GB2312之中的第一个汉字,它的区位码就是160原创 2020-11-17 20:05:10 · 7805 阅读 · 2 评论 -
C语言获取linux shell命令返回值
C语言获取linux shell命令返回值C语言执行linux shell命令,对于没有返回结果的,可直接使用system()函数,对于有返回结果的,可以用popen命令,对其封装后,可以获取相应的返回信息,封装函数如下:int SystemRtn(const char* Cmd, char* pbyRtnStr){ FILE *fp; int rc = 0; char result_buf[256]; int nOnceLen = 0; int nTotalLen = 0; int i原创 2020-09-10 16:34:37 · 1884 阅读 · 2 评论 -
关于select函数超时时间问题
关于select函数超时时间问题select函数使用int select(int n,fd_set * readfds,fd_set * writefds,fd_set * exceptfds,struct timeval * timeout);具体参数说明:1、 int n是一个整数值,是指集合中所有文件描述符的范围,即所有文件描述符的最大值加1,不能错!在Windows中这个参数的值无所谓,可以设置不正确。2、fd_set *readfds是指向fd_set结构的指针,这个集合中应该包括文件原创 2020-08-24 19:10:23 · 12935 阅读 · 3 评论 -
用c语言浮点输出时,如何让小数点后没用的0不显示
动态控制浮点数小数位数2020年7月29日存在问题C语言把浮点数直接通过sprintf函数保存在字符数组中,末尾的0显得很多余,想办法把末尾的0去掉。解决问题在打印时,通过格式控制输出,一般情况使用%f即可输出浮点数,我们通过 %.*f ,动态控制小数位,其中“ * ”控制小数位个数。下面直接上代码:int CutFloatEndZero(float fVal, char* poutval){ int i; int nCnt = 0; int nlen = 0; char abyVal原创 2020-07-29 14:36:00 · 15613 阅读 · 0 评论 -
C语言函数返回指针问题
C语言函数返回指针问题今天写代码时想用一个函数返回一个结构体指针,结果出错了,然后做一个总结。下面是出错的示例:int *fun( ){ int a ; return &a; // 返回局部变量的地直,返回后这个变量已不存在了}局部变量是保存在栈中的,随着函数的结束,局部变量也被释放,当函数执行完毕后,指针指向的地址是存在的,但它指向的数据已经不在了。总结子函数想要返回指针,指针必须指向一个确定的地址,一般有两种1)静态变量(全局静态或局部静态),这种变量不会随着子函数的结原创 2020-06-23 19:27:29 · 1044 阅读 · 1 评论