- 博客(45)
- 资源 (3)
- 收藏
- 关注
原创 如何将一段字符串在word中,自动删除换行,两两之间增加空格键
我们在拉取十六进制数据分析时,经常遇到对方只给一条长长的字符串txt,当然,我们可以通过代码的方式进行空格添加,方便阅读,但是有时候身边没有编译工具或者流程复杂,介绍一个用word的实现大规模字符串自动删除换行,两两之间增加空格键,增加数据可读性的方法。这样子就能愉快的进行肉眼读取分析啦!
2022-09-20 10:00:26 429 1
原创 结构体赋值运行时出现段错误(核心已转储)
今天给嵌套结构体赋值的时候编译没问题,但是运行总是段错误,后来发现是忘了分配动态内存,记得用calloc分配,实际结构体嵌套比较复杂,在这里举个简单的例子给大家看看,引以为戒。#include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>typedef int MsgCountltev_t;typedef int MinuteOfTheYearlte
2022-04-19 15:45:47 1218
原创 如何使用交叉编译将大量源文件生成动态库
今天要把算法包生成一个动态库放在ARM上调用运行,特此记录一下给大家参考1、首先将算法文件夹中的源程序生成.o文件arm-linux-gnueabi-gcc -c -fpic *.c -I. //加-I.的原因在于要用到包中有头文件{}CC}视自己的交叉编译工具而定2、然后编译生成动态库arm-linux-gnueabi-gcc -shared -fpic -o libSPDU.so *.o-shared 是生成动态库-fpic 生成位置无关代码libSPDU.so视自己的情况而定3
2022-04-13 17:10:46 3513
原创 warning: assignment from incompatible pointer type
换了个编译环境突然报了个警告warning: assignment from incompatible pointer typeregd_aids = ioctl_buf;这能忍?unsigned char ioctl_buf[4096] = {0};int v2x_ioctl(int sk, int cnt){ struct register_aids reg_aids; int ret = 0; int *regd_aids = NULL; unsigned
2021-11-29 17:16:58 3710
原创 error: parameter name omitted的错误:参数名称省略
##error: parameter name omitted 错误:参数名称省略在这里插入代码片void cJSON_fill_buffer(double long, double Lat)//void cJSON_fill_buffer(){ //创建一个空的文档(对象)cJSON *json = cJSON_CreateObject();cJSON_AddNumberToObject(json,"utcTime", 123.456);cJSON_AddNumberToObject(
2021-11-29 17:06:23 9173
原创 64位ubuntu虚拟机编译后可运行,32位的arm不能运行的原因
这两天遇到一个怪事,就是在64位虚拟机上使用asn1c工具编译生成的asn源文件,交叉编译生成静态库,在虚拟机上跑的好好的,但是在arm上跑的时候无法解码,最后查明原因是asn1c的源码需要在32位机上生成,否则就会出现解码失败的情况。其他的情况除了大小端问题,数据类型大小不同的问题,都需要往这个方面想想,并不只是交叉编译的问题。...
2021-08-11 18:02:04 497 2
原创 ubuntu下本地文件上传到服务器以及从服务器上下载文件
由于经常需要在办公室调代码,编译完放到车上工控机运行,总是需要拷贝到U盘很麻烦,因此借助于服务器上传下载,十分便利。(1)将本地文件上传至服务器:scp -r filename username@111.112.113.114:/home/username/(2)从服务器下载文件到本地:scp root@111.112.113.114:/home/username /home/zxj/如果缺少什么库就安装什么即可...
2021-08-11 17:50:27 1202
原创 如何使用ASN1.IO Playground
根据ASN1C编译生成的协议,以CSAE-157-2020的BSM.asn为例BSM DEFINITIONS AUTOMATIC TAGS ::= BEGIN-- imports and exportsEXPORTS BasicSafetyMessage;IMPORTS AccelerationSet4Way FROM DefAcceleration BrakeSystemStatus FROM VehBrake VehicleSize FROM VehSize Position3D
2021-08-02 16:23:41 779
原创 十六进制数组转换成十进制输出
大小端模式介绍大端(存储)模式:是指一个数据的低位字节序的内容放在高地址处,高位字节序存的内容放在低地址处。小端(存储)模式:是指一个数据的低位字节序内容存放在低地址处,高位字节序的内容存放在高地址处。(可以总结为“小小小”即低位、低地址、小端)一般而言X86平台的PC机是小端字节序的,而有的嵌入式平台则是大端字节序的。因而对int、uint16、uint32等多于1字节类型的数据,在这些嵌入式平台上应该变换其存储顺序。关于判断计算机大小端的代码代码:#include <stdio.h&g
2021-07-13 11:30:44 2828 2
原创 fatal: remote error: access denied or repository not exported: /x264
root@ubuntu:/opt# git clone git://git.videolan.org/x264正克隆到 'x264'...fatal: remote error: access denied or repository not exported: /x264进行x264安装的时候出现的问题:换个地址即可:git clone https://git.videolan.org/git/x264.git...
2020-08-20 11:02:15 2477 1
转载 mqtt的安装和使用
参考地址:https://www.jianshu.com/p/37f7ee7ead65第一步:1.引入mosquitto仓库并更新# 注意 这一步不能忽略sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppasudo apt-get update2. 执行以下命令安装mosquitto包sudo apt-get install mosquitto3. 安装mosquitto开发包sudo apt-get instal
2020-08-13 14:21:21 928
原创 各种编码解码的使用
文件地址:https://github.com/jianghuatao1/cits-interfaces前提下载需求:# install asn1csudo apt-get updatesudo apt-get install asn1c# compile asn filesasn1c *.asn# asn usage parametersman asn1c首先需要对TCSAE进行make,命令为make -f <makefile文件名>之后屏蔽掉含有ma
2020-08-13 14:19:37 259
原创 交叉编译下/arm-fslc-linux-gnueabi/gcc/arm-fslc-linux-gnueabi/7.3.0/real-ld: cannot find -lglib-2.0
今天编译一个有关于v2x的文档quectel_cv2x_sdk,但是在按照指导操作后make怎么都通过不了,开始是因为解压缩后的软链接失效,后来ln -s 后还是会出现一些丢失库文件ubuntu@ubuntu:~/Downloads/quectel_cv2x_ag15_sdk_v1.24.1_20191224/acme_imx6$ makearm-fslc-linux-gnueabi-gcc -march=armv7-a -mthumb -mfpu=neon -mfloat-abi=hard --sy.
2020-08-13 14:16:32 1388 2
原创 全局变量与局部变量的区别
// 全局变量: // 写在函数和大括号外部的变量, 我们称之为全局变量 // 作用域: 从定义的那一行开始, 一直到文件末尾 // 全局变量可以先定义在初始化, 也可以定义的同时初始化 // 存储: 静态区 // 程序一启动就会分配存储空间, 直到程序结束才会释放 // 局部变量: // 写在函数或者代码块中的变量, 我们称之为局部变量 // 作用域: 从定义的那一...
2018-03-17 13:58:13 694
转载 什么是析构函数
构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。 以C++语言为例,析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回...
2018-03-15 15:57:50 699
转载 什么是构造函数
简单地说构造函数是类函数,函数名与类名完全相同,无返回值构造函数属于类的成员函数,除了具有一般成员函数的特点外,还具有自己的特点:(1)是类的一个特殊的成员函数,函数名与类名相同;(2)访问属性应该是public;(3)功能是初始化对象,在构造函数中一般不作初始化以外的事情;(4)可以在类内定义,也可在类外定义;(5)无函数返回类型,注意:什么也不写,也不可写为void;(6)程序运行时,当对象被...
2018-03-15 15:54:48 280
转载 c++中的this 知识点
1.什么是this先要理解class的意思,class应该理解为一种类型,象int,char一样,是用户自定义的类型。(虽然比int char这样build-in类型复杂的多,但首先要理解它们一样是类型)。用这个类型可以来声明一个变量,比如int x, myclass my等。这样就像变量x具有int类型一样,变量my具有myclass类型。理解了这个,就好解释this了,my的this 就是指向...
2018-03-15 15:53:21 316
原创 8种经典排序算法
常见经典排序算法1.希尔排序2.二分插入法3.直接插入法4.带哨兵的直接排序法5.冒泡排序6.选择排序7.快速排序8.堆排序 一.希尔(Shell)排序法(又称宿小增量排序,是1959年由D.L.Shell提出来的) /* Shell 排序法 */#include<stdio.h> void sort(intv[],int n){ int gap,i,j,temp; f...
2018-03-06 18:49:12 142
转载 在C语言中 #define dPS struct s * 与 typedef struct s * tPS; 的 这两种声明的区别
前者是宏声明,此后dPS等价于后面的struct s*;后者是定义,此后tPS作为一个指针可以被使用;
2018-02-08 10:25:24 2477
转载 关于c语言中,何时用指针的问题
1.什么时候都可以用指针,因为用指针的效率比用变量高。2.当一个函数要返回1个以上的运算结果时,就必须用指针,因为一个函数只能返回一个值,更多的得用指针“带回”。3.操作数组时,用指针不仅方便得多而且代码时效很高。4.操作文件时,不用指针寸步难行。5.利用指针可以简化函数调用的书写过程,使源代码易于阅读。……不一而论。(转自百度知道)
2018-02-07 20:52:11 2435
原创 fgets_wrapper函数的用法
函数名称:fgets_wrapper参数:buffer输入缓冲区指针;buflen最大输入字符数,实际最大输入buflen-1; fp输入流功能:重新封装fgets函数; 解决fgets输入时最大长度超过buflen-1个字符后输入缓冲区遗留问题及输入包含'\n'问题区别: scanf("%s",buffer) 输入字符串不能有空格; gets(buffer
2018-02-07 20:45:43 337
转载 在C++ 程序中调用被 C 编译器编译后的函数库,为什么要加 extern “C”声明?
答:首先,extern是C/C++语言中表明函数和全局变量作用范围的关键字,该关键字告诉编译器,其声明的函数和变量可以在本模块或其它模块中使用。通常,在模块的头文件中对本模块提供给其它模块引用的函数和全局变量以关键字extern声明。extern "C"是连接申明(linkage declaration),被extern "C"修饰的变量和函数是按照C语言方式编译和连接的。作为一种面向对象的语
2018-02-05 18:52:41 311
原创 斐波那契数列
斐波那契数列普通版本#include int main(int argc,char *argv[]){ int i; int a[40];a[0]=0;a[1]=1;printf("%d\n%d\n",a[0],a[1]);for (i=0;i{a[i]=a[i-1]+a[i-2];printf ("%d\n",a[i]);
2018-02-05 10:13:50 129
转载 关于链栈的操作(CSDN转载)
#include "stdafx.h" #include #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 20 /* 存储空间初始分配量 */ typedef int Status; typedef int SElemType;
2018-02-04 20:58:07 164
转载 c语言中常见的内存错误和解决方法
常见的错误 关于内存的一些知识已在内存分配中提及,现记录与分享常见的内存错误与对策。类型 1:内存未分配成功,却使用了它。方 法:在使用之前检查指针是否为NULL。 1)当指针p是函数的参数时,在函数入口处用语句assert(p!=NULL)进行断言检查。 2)当使用malloc或new来申请内存
2018-02-01 14:49:45 1103
原创 c语言中的return 0有什么用?
return 0是正常退出,return 非零是异常退出,这是返回给控制台的,不在编的程序的控制范围内,是给操作系统识别的,对你的程序无影响。如果是C中,定义void main()可以不用返回值。记得return 接的是一个表达式,可以是一个立即数,一个变量,一个计算式,前面我们就看到 return a+b;的例子。 return 甚至也可以接一个函数。
2018-02-01 11:42:05 57475
转载 函数调用和库函数的区别
库函数是语言本身的一部分,而系统函数是内核提供给应用程序的接口,属于系统的一部分。函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。用户应用程序访问并使用内核所提供的各种服务的途径即是系统调用。在内核和用户应用程序相交界的地方,内核提供了一组系统调用接口,通过这组接口,应用程序可以访问系统硬件和各种操作系统资源。 1.系统调用是为了方便应用使用操作系统的接口,而库函数是为了方便人们
2018-02-01 10:49:19 485
原创 输入一行字符,分别统计出其中英文字母、空格、数字的个数。
#include #include int main (){int a,b,c,i,pos;char str[20]="acfin e81 234 oq ";a=0;b=0;c=0; pos=strlen(str); for (i=0;i{if (('a'{a++; /*当输出大小写字母时,a便加1.*/}if ('0
2018-01-29 22:20:27 591
原创 Linux系统中vim输入中的光标移动
光标定位G 移至行行首nG 移至第n行行首n+ 移n行行首n- 移n行行首n$ 移n行(1表示本行)行尾0 所行行首$ 所行行尾^ 所行首字母h,j,k,l 左移移移右移H 前屏幕首行行首M 屏幕显示文件间行行首L 前屏幕底行行首更参考原文移行道两0 ^ (shift+6)行首第字符空白字符点区别移行尾 $ (shift+4)
2018-01-29 21:40:39 5069 1
转载 将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
#include int main(){ int i,n; //正整数分解质因数 scanf("%d", &n); printf("%d=",n ); i=2; while( n > i ) //从2开始找最小因子 { if ( n%i== 0 )
2018-01-29 16:55:46 7425 1
转载 堆和栈的区别
堆和栈的区别: 一、堆栈空间分配区别: 1、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈; 2、堆(操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。 二、堆栈缓存方式区别: 1、栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放; 2、堆是存放在
2018-01-29 13:43:50 129
转载 putchar和getchar 的用法
putchar:除了printf函数以外,在c语言中还可以使用putchar函数输出字符型数据。调用格式如下:putchar(c);c可以是字符变量名,也可以是字符常量,但是要注意putchar只能输出字符型数据。表示将字符型数据以字符的形式输出到屏幕上。如 putchar('C')输出了一个大写字母C到屏幕中。getchar:getchar()的作用是从键盘上读入
2018-01-29 11:20:40 8238
原创 函数的返回值的理解
所谓函数返回值是一个函数在运算结束以后向调用它的母函数或者系统反馈一个值,这个值可以是各种变量类型.举个简单的例子:1234567891011intadd(inta,intb){return(a+b);}intmain()
2018-01-29 10:28:09 979
转载 动态存储方式和静态存储方式
从变量的作用域的角度来观察,变量可以分为全局变量和局部变量;全局变量都是存放在静态存储区中的。因此它们的生存期是固定的,存在于程序的整个运行过程局部变量,如果不专门声明存储类别,都是动态地分配存储空间的从变量值存在的时间(即生存期)观察,变量的存储有两种不同的方式:静态存储方式和动态存储方式静态存储方式是指在程序运行期间由系统分配固定的存储空间的方式动态
2018-01-29 10:27:41 10035
转载 static全局变量与普通的全局变量的区别?
1、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别? 答:全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件
2018-01-29 10:11:32 11070 1
原创 从键盘里输出10个数,输出最大值和最小值
#include int main(){int max,min,i,a[10];for(i=0;i{scanf("%d",&a[i]);}max=a[0];min=a[0];for (i=1;i{if (max{max=a[i];}if(min>a[i]){min=a[i];}} printf("ma
2018-01-27 22:09:16 11810 3
转载 冒泡排序
三种冒泡排序/* 对顺序表L作交换排序(冒泡排序初级版) */void BubbleSort0(int a[]){ int i,j; countr=0; countc-0; for(i=0;i { for(j=i+1;j { countr++;
2018-01-27 09:05:39 141
转载 如何定义字符串
如何定义字符串一维和二维的都可以;一维的情况如下:1,char string0[10];2,char string1[]="prison break";3,char string2[100]="michael scofield";1句表示定义个长度为10的字符串,但未赋值,2句表示定义了一个字符数组string1,并进行初始化,使得其长度自动为13(字符串”pr
2018-01-26 11:20:58 30810 2
原创 九九乘法表
九九乘法表#include int main(){int i,j,k;for(i=1;i{for(j=1;j{k=i*j;printf("%d*%d=%d\n",i,j,k);}}return 0;}输出方式还需要改进
2018-01-25 22:46:13 177
原创 数组的最大和第二大的编程
快速找出一个数组中的最大数、第二大数。(笔试题)#include int main(){ int a[10]={2,5,7,9,1,2,4,5};int i;int MAX=a[0];int SECONDMAX=a[1];for (i=0;a[i]>0;i++){if(a[i]>MAX){SECONDMA
2018-01-25 22:45:21 184
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人