![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 55
super码王
一直在努力,从未放弃!!!
展开
-
【sm2算法】基于mbedtls开源库国密算法的使用(二)
在上一节中我们讲解了mbedtls基础知识:sm2环境、sm2公私钥的存储以及sm2公私钥的生成。【sm2算法】基于mbedtls开源库国密算法的使用(一)_我想月薪过万的博客-CSDN博客https://blog.csdn.net/qq_41885673/article/details/123192953?spm=1001.2014.3001.5501在这一节我们就反着来玩一下,开发场景如下:我们已经明确的知道sm2加密算法的公私钥,如何将其放入sm2环境中???涉及到的具体方法/**原创 2022-03-01 15:31:34 · 1855 阅读 · 3 评论 -
【sm2算法】基于mbedtls开源库国密算法的使用(一)
基础知识(1)公钥:在代码编程中,公钥是使用64个字节来存储的。(2)私钥:在代码编程中,公钥是使用32个字节来存储的。对应的代码具体实现(1)mbedtls sm2环境在 mbedtls 中 sm2 环境是用结构体 sm2_context 结构体来表示的,具体结构体如下所示:typedef struct { mbedtls_ecp_group grp; /*!< elliptic curve used group */...原创 2022-02-28 22:55:14 · 3240 阅读 · 4 评论 -
C语言自定义函数实现以特定字符分割字符串
原理概括双指针法原理图解核心代码/****************************************************************************** * 负 责 人 : 易齐 * 创建日期 :2022-01-22 13:56:55 * 函数功能 : 以 特定字符 分隔字符串 * 输入参数 : argv: 装分隔好的字符串的指针数组 ,str: 需要分隔的字符串 , separator:分隔字符 * 输出参数 : 分隔好后 指针数组 的长原创 2022-01-22 14:27:14 · 1535 阅读 · 0 评论 -
window下C语言中strtok函数的使用
基础知识原型: char *strtok(char *str, const char *delim);功能:分解字符串为一组字符串。参数说明:str为要分解的字符串,delim为分隔符字符串。其中 str 不能用指针来存储,因为这个方法的本质是找到分隔符,并用'\0'代替,即字符串的结束符。原理:找到分隔符,并用'\0'代替,即字符串的结束符。返回值:从str开头开始的一个个被分割的串的首地址。当没有被分割的串时则返回NULL。代码示例int main(){ cha.原创 2022-01-19 21:23:20 · 550 阅读 · 0 评论 -
C语言中字符串各存储方式区别详解
在C语言中,存储字符串我们有两种典型的方式:指针和字符数组指针方式char *s1 = "hello";数组方式char s2[] = "hello";两种方式的数据在内存上的分布指针方式数组方式对应现象指针方式定义的数组不能修改具体哪个字符,但是能够改变指针指向。 数组方式不能改变指向,但是能够修改具体哪个字符。代码示例指针方式int main(){ char *s2 = "hello"; printf("修改前: %s\n", s2)原创 2022-01-19 20:26:29 · 1048 阅读 · 0 评论 -
C语言枚举类型的使用
我们知道在 C语言 中学习一种数据类型无非就是搞清楚这种类型的 声明 和 定义。枚举类型的声明enum WEEKDAY{ MON = 1, //枚举常量,可以规定后面迭代值的初始值 TUE, WED, THU, FRI, SAT, SUN};注意:这样声明的话 enum WEEKDAY 这个整体才是 WEEKDAY 枚举类型typedef enum WEEKDAY{ MON = 1, TUE, WED,原创 2022-01-17 16:26:29 · 1339 阅读 · 0 评论 -
C语言中 static 和 extern 的用法详解
在 C 语言中变量存在两种 :全局变量 局部变量所以下面我们就以这两种变量为引展开对static 和 extern 的讲解extern其实啊,我们所定义的全局变量默认就是 带extern 的。如int g_x = 10; ==>等价==> extern int g_x = 10;这是什么意思呢?,就是说这种全局变量 在整个源程序中 所有 源文件 里都可以访问和修改。只是访问方式有所不同,下面我就详细说一下在各个地方的访问方式:在声明全局变量的源文件中使用...原创 2021-11-23 11:19:53 · 1276 阅读 · 0 评论 -
Linux下报 No manual entry for 的解决方法
报错展示报错原因没有安装man-pages 这个包解决方法yum -y install man-pages原创 2021-11-15 09:26:24 · 2449 阅读 · 0 评论 -
C语言如何将十六进制字符串转为十六进制Byte
问题展示我们的目标是将十六进制字符串转为十六进制Byte由上图我们可以清晰的看到 我们失败了。如何解决呢?代码示例#include<stdio.h>#include<stdlib.h>#include<string.h>void str2hex(unsigned char* value,int len,unsigned char* out);int main(){ unsigned char str[2] = "8c"; .原创 2021-07-05 18:37:14 · 2068 阅读 · 1 评论 -
C语言数据存储与数据打印的奥秘
数据存储要记住,在计算机中,数据都是以 二进制 来存储的,十六进制、八进制和十进制只是我们人为定义的一种表现形式。数据打印谈到数据打印,有人可能会说:不就是 printf() 吗?有啥难的。面对着你的回答,我也只能 “哈哈” 一声。问道:printf() 原理你清楚吗?假如别人没有给你提供printf() 函数,你该如何办?我猜你现在肯定是懵逼状态。不过别怕,下面我们来看看实际例子。经典案例一#include<stdio.h>#include<stdl.原创 2021-07-05 16:25:16 · 362 阅读 · 0 评论 -
C语言中 char str[] 与 char *str 的关系
首先,我们得明确,在C语言中,没有真正的字符串类型。所以,就诞生了 字符串数组 这么个类型。于是,当我们想申明一个字符串变量时,大体上有下面两种方法:char str[] = "hello";char *p = "hello";str[]:它定义的是一个字符串数组变量。可以通过 str[0] = "w" 修改值。*p:它定义的是一个指针变量。不能通过 *(p+0) = "w" 修改值。为什么这两种写法都可以呢?这就和C语言中字符串本质有关了。C语言中字符串本质 是返回一个原创 2021-06-27 19:58:36 · 1702 阅读 · 1 评论 -
C语言printf打印的奥秘
基础补充想完全掌握C语言的 printf() 函数,你就得明白C语言中的基本类型及其所占字节数。位、字节、字的概念大家自己百度了解。下面我只给其关系:8位 = 1字节 2字节 = 1字代码示例作为一个刚入门的小白,我们玩的数据都是十分小的,一般不会超过 4个字节(4294967296),所以,我们用什么格式化打印都不会出错。案例一:小数据,大打印我们现在选择一个不超过 4个字节 的数据,例如:9999。十进制表示:9999十六进制表示:0X270...原创 2021-06-24 20:36:06 · 778 阅读 · 0 评论 -
SO动态链接库文件的编译和使用
做C语言开发的都知道,在Linux环境中动态链接库以 .so结尾;在Windows环境中动态链接库以 .dll结尾。在讲使用之前,我先来给大家补补基础。链接库分为 静态链接库 和 动态链接原创 2021-06-21 16:24:28 · 5430 阅读 · 1 评论 -
C语言实现TCP连接
开发环境 TCP服务端:TCP&UDP测试工具原创 2021-06-16 22:20:50 · 2129 阅读 · 0 评论 -
getopt()与getopt_long()的使用简介
感性认识getopt()与getopt_long()是专门处理命令行参数的两个函数,getopt()处理短参数,getopt_long()处理长参数。还不明白请看下面这张图:解析 -t yiqi 就是这两个函数做的事,下面我们一起来看看究竟如何使用好这两个函数。还不明白的请看下图:非常清楚,命令行参数由Command name,Option,Option argument以及Operands组成。Command name不用多说,就是程序的名称。操作对象Operands又称no.原创 2021-06-16 15:27:22 · 4704 阅读 · 1 评论 -
微观的C/C++编译执行过程
前言 C语言 --》 .exe几个过程: 预处理:展开原创 2021-06-14 18:42:55 · 17487 阅读 · 14 评论 -
jni入门级别教程
前提条件笔者假想着:能看到这篇博客的读者 NDK环境 已经配置好了哈开发步骤第一步:新建工程工程建完之后在真机或模拟器上运行一遍,确保工程建的没问题第二步:配置NDK第三步:在Java中添加 native 函数 并 调用我们这里就借助MainActivity 来写一个 native 函数并调用package com.wust.jnitest3;import androidx.appcompat.app.AppCompatActivity.原创 2021-04-01 23:00:12 · 352 阅读 · 0 评论 -
vscode如何运行c语言,scanf输入
问题描述最近,我在用 vscode 学习C语言,发现点击运行的时候他一直在 输出 面板给我运行,我想通过scanf输入 又不行,所以,产生了这篇博客解决方法选择左上角 文件->首选项(preferences)->设置(settings)在搜索中输入RunInTerminal并勾选打开launch.json文件,externalConsoleg改为true再来运行便是在 终端里面了新问题这个时候你会发现中文怎么出现了乱码,其实是你的编码格式有问题,解决.原创 2021-03-31 16:29:54 · 13211 阅读 · 22 评论 -
C语言中动态与静态内存分配
基本常识静态内存分配:静态内存是程序编译执行后系统自动分配,由系统自动释放,静态内存是栈分配的,特点:不持久。动态内存分配:动态内存是开发者手动分配的,是堆分配的。特点:持久。代码实现下面代码中实参为什么要取地址,请参考C语言中通过调用函数来修改实参值静态分配我们可以发现,在第二次打印值的时候,已经不是我们预想的了#include<stdio.h>#include<stdlib.h>void func(int** copy_value){原创 2021-03-31 15:02:09 · 665 阅读 · 0 评论 -
C语言中通过调用函数来修改实参值
问题阐述在写C语言程序的时候啊,我们总会遇到这样一个问题,我们把参数传到函数里处理,一顿操作之后发现我们传进去的值并没有发生改变,这就有点令人头疼了。问题原因因为你传进去的是 值,此时,会发生值拷贝,你改变的那个参数已经不是你传进去的值了代码复现#include<stdio.h>#include<stdlib.h>void func(int copy_value){ copy_value = 100;}int main(){ i原创 2021-03-31 14:33:46 · 4550 阅读 · 0 评论