char函数

CAN总线(一)

邮差的信 提交于 2019-12-26 19:14:02
原文出处: http://www.cnblogs.com/jacklu/p/4729638.html 嵌入式的工程师一般都知道CAN总线广泛应用到汽车中,其实船舰电子设备通信也广泛使用CAN,随着国家对海防的越来越重视,对CAN的需求也会越来越大。这个暑假,通过参加苏州社会实践,去某船舶电气公司实习几周,也借此机会,学习了一下CAN总线。 概述 CAN(Controller Area Network)即控制器局域网,是一种能够实现 分布式实时控制的 串行 通信网络 。 想到CAN就要想到德国的Bosch公司,因为CAN就是这个公司开发的(和Intel) CAN有很多优秀的特点,使得它能够被广泛的应用。比如:传输速度最高到 1Mbps ,通信距离最远到 10km ,无损位仲裁机制, 多主结构 。 近些年来,CAN控制器价格越来越低,很多MCU也集成了CAN控制器。现在每一辆汽车上都装有CAN总线。 一个典型的CAN应用场景: CAN总线标准 CAN总线标准只规定了 物理层 和 数据链路层 ,需要 用户自定义应用层 。不同的CAN标准仅物理层不同。 CAN收发器负责逻辑电平和物理信号之间的转换。 将逻辑信号转换成物理信号(差分电平),或者将物理信号转换成逻辑电平。 CAN标准有两个,即 IOS11898 和 IOS11519 ,两者 差分电平特性不同 。 高低电平幅度低

指针

旧巷老猫 提交于 2019-12-26 18:20:53
前言 这不是我第一次写关于C指针的文章了,只是因为指针对于C来说太重要,而且随着自己编程经历越多,对指针的理解越多,因此有了本文。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以我想通过一篇文章来尽可能的讲解指针,以对得起这个文章的标题吧。 为什么需要指针? 指针解决了一些编程中基本的问题。 第一,指针的使用使得不同区域的代码可以轻易的共享内存数据。当然你也可以通过数据的复制达到相同的效果, 但是这样往往效率不太好,因为诸如结构体等大型数据,占用的字节数多,复制很消耗性能。但使用指针就可以很好的避免这个问题,因为任何类型的指针占用的字节数都是一样的(根据平台不同,有4字节或者8字节或者其他可能)。 第二,指针使得一些复杂的链接性的数据结构的构建成为可能,比如链表,链式二叉树等等。 第三,有些操作必须使用指针。如操作申请的堆内存。还有: C语言中的一切函数调用中,值传递都是“按值传递(pass by value)”的,如果我们要在函数中修改被传递过来的对象,就必须通过这个对象的指针来完成。 指针是什么? 我们指知道:C语言中的数组是指 一类 类型,数组具体区分为 int 类型数组,double类型数组,char数组 等等。同样指针 这个概念也泛指 一类 数据类型,int指针类型,double指针类型,char指针类型等等。

(转)sprintf 将字串格式化

◇◆丶佛笑我妖孽 提交于 2019-12-26 03:11:02
sprintf 将字串格式化。   在头文件 #include<stdio.h>中   语法: string sprintf(string format, mixed [args]...);   传回值: 字串   1. 处理字符方向。-负号时表时从后向前处理。   2. 填空字元。 0 的话表示空格填 0;空格是内定值,表示空格就放着。   3. 字符总宽度。为最小宽度。   4. 精确度。指在小数点后的浮点数位数。   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-   转换字符   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-   % 印出百分比符号,不转换。   b 整数转成二进位。   c 整数转成对应的 ASCII 字元。   d 整数转成十进位。   f 倍精确度数字转成浮点数。   o 整数转成八进位。   s 整数转成字串。   x 整数转成小写十六进位。   X 整数转成大写十六进位。   =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-   <?   $money = 123.1   $formatted = sprintf ("%06.2f", $money); // 此时变数 $ formatted 值为 "123.10"   $formatted = sprintf ("%08.2f", $money); //

MySQL常用字符串函数

送分小仙女□ 提交于 2019-12-26 03:08:37
字符串函数    是最常用的的一种函数,在一个具体应用中通常会综合几个甚至几类函数来实现相应的应用: 1、LOWER(column|str): 将字符串参数值转换为 全小写字母 后返回 mysql> select lower('SQL Course'); +---------------------+ | lower('SQL Course') | +---------------------+ | sql course | +---------------------+ 2、UPPER(column|str): 将字符串参数值转换为 全大写字母 后返回 mysql> select upper('Use MYsql'); +--------------------+ | upper('Use MYsql') | +--------------------+ | USE MYSQL | +--------------------+ 3、CONCAT(column|str1, column|str2,...): 将多个字符串参数首尾相连后返回 mysql> select concat('My','S','QL'); +-----------------------+ | concat('My','S','QL') | +-----------------------+ | MySQL

c风格字符串函数

一曲冷凌霜 提交于 2019-12-26 03:08:23
十一、C 风格字符串 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1) 查找字符串 strpbrk(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找该集合的任一元素 strspn(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找不属于该集合的任一元素的偏移 strcspn(p, p1) 以目标字符串的所有字符作为集合,在当前字符串查找属于该集合的任一元素的偏移 * 具有指定长度的字符串处理函数在已处理的字符串之后填补零结尾符 2)字符串到数值类型的转换 strtod(p, ppend) 从字符串 p 中转换 double 类型数值,并将后续的字符串指针存储到 ppend 指向的 char* 类型存储。 strtol(p, ppend, base) 从字符串 p 中转换 long 类型整型数值,base 显式设置转换的整型进制,设置为 0

RFIN,RC522教程

那年仲夏 提交于 2019-12-26 01:10:52
B站视频教程(教程一般): https://www.bilibili.com/video/av73409046?p=14 相关文档资料(含代码): https://pan.baidu.com/s/1xEKybpw5C62c6P5rzpAJ-Q 主要看红框的文件 代码 mfrc522.h #ifndef __MRRC522_H__ #define __MRRC522_H__ ///////////////////////////////////////////////////////////////////// //函数声名 ///////////////////////////////////////////////////////////////////// void WriteRawRC(unsigned char Address,unsigned char value); unsigned char ReadRawRC(unsigned char Address); void SetBitMask(unsigned char reg,unsigned char mask); void ClearBitMask(unsigned char reg,unsigned char mask); char PcdReset(void); void PcdAntennaOn(void);

c语言查漏补缺

自闭症网瘾萝莉.ら 提交于 2019-12-26 01:10:42
1.char* i;与char i;一样 在同时定义多个变量char i,j,k;时容易引起歧义。 2.typedef char* s; s a,b; #define s char*; s c,d; 只有a,b,c被定义为了char*,d被定义为char。 3.typedef struct LNode { ElemType data; struct LNode *next; } LinkList; 同时实现了很多步骤: 1>struct LNode { ElemType data; struct LNode next; }; 2>typedef struct LNode LinkList; 注意 ' ’ 其中可以直接用LNode来定义函数,变量为struct LNode型,用LinkList定义struct LNode型指针变量。 LinkList等于LNode*或LNode *。 4.int p, q; p=(int )malloc(size); //分配size字节的存储区域 p=(int )realloc(q,size); //将p所指的已分配的存储空间的大小改为size。 来源: CSDN 作者: hutingfeng 链接: https://blog.csdn.net/hutingfeng/article/details/103703662

在Linux下面开发一个mini版的shell

£可爱£侵袭症+ 提交于 2019-12-25 22:57:47
一.shell的原理 Linux系统提供给用户的最重要的系统程序是Shell命令语言解释程序。它不属于内核部分,而是在核心之外,以用户态方式运行。 其基本功能是解释并执行用户打入的各种命令,实现用户与Linux核心的接口。系统初启后,核心为每个终端用户建立一个进程去 执行Shell解释程序,shell的简单定义就是命令行解释器。 我现在打印一下当前进程的父进程。 编译运行后,打印出来的就是父进程,通过ps aux来查看该父进程的状态。我们可以很明显的看到当前test对应的进程------56042进程就是bash进程,而bash就是一个具体的shell。shell会f先ork一个子进程,它最后会被替换成我们敲入指令对应的代码和数据。 二.整体思路 打印一个提示符,让用户输入一个指令。 解析输入的指令,找到对应的可执行程序。 创建子进程,子进程程序替换(替换成你敲入的命令),来加载可执行程序。 父进程进行进程等待,等待子进程结束。 子进程结束,父进程从wait中返回,循环执行1. 1.打印一个提示符,让用户输入一个指令。 我们知道每次输入指令的时候,都会有一个提示符,我在这里为了简便暂时将这个提示符写死,不随着用户所在路径而变化。这个部分非常的简单,一个简单的printf就可以解决问题。 printf ( "[zhaotiedan@localhost myshell]$" ) ; 2

C中 strcmp() 与 strcpy()

允我心安 提交于 2019-12-25 22:48:31
头文件: #include <string.h> 一、strcmp() 函数 函数原型: int strcmp(const char *str1, const char *str2) 参数 str1 -- 要进行比较的第一个字符串。 str2 -- 要进行比较的第二个字符串。 返回值 该函数返回值如下: 如果返回值 < 0,则表示 str1 小于 str2。 如果返回值 > 0,则表示 str2 小于 str1。 如果返回值 = 0,则表示 str1 等于 str2。 即:两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如: 1."A"<"B" 2."A"<"AB" 3."Apple"<"Banana" 4."A"<"a" 5."compare"<"computer" 二、strcpy() 函数 函数原型: char *strcpy(char* dest, const char *src); 功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间; 说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。 //C语言标准库函数strcpy的一种典型的工业级的最简实现。 //返回值:目标串的地址。 //对于出现异常的情况ANSI-C99标准并未定义

字节对齐 详解

你离开我真会死。 提交于 2019-12-25 08:51:25
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任 何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的 排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型 的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没 有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int 型(假设为32位系统)如果存放在偶地址开始的地方,那 么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就需要2个读周期,并对两次读出 的结果的高低字节进行拼凑才能得到该32bit数 据。显然在读取效率上下降很多。 二.字节对齐对程序的影响: 先让我们看几个例子吧(32bit,x86环境,gcc编译器): 设结构体如下定义: struct A { int a; char b; short c; }; struct B { char b; int a; short c; };