![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
敏哥向前冲
奋斗到无能为力,拼搏到感动自己。
展开
-
C语言中的''\0",让你透彻到底
C语言字符串末尾的''\0",很重要,它不占字符串的实际长度,但是比如字节数为5的时候,最后一个字节不为\0的话,那么输出后的就是乱码。所以,最好主动在字符串末尾加\0的重要性。但是,哪些情况可以不用加"\0"呢,编译器会自动补上?1,对于初始化指针,char *p="abcde"; 最后不用加零,自动补上。2, char s[]="abcd"; 对于这种未指定长度的字符数组,不原创 2014-03-02 13:38:36 · 2851 阅读 · 0 评论 -
BCD码转十进制字符串
void BCDCodeToDecimalString(unsigned char x[],int len,char* y){ for(int i(0);i { if(x[i]>=0x00&&x[i] { y[i*2] = '0'; sprintf((y+i*2+1),"%x",x[i]原创 2014-03-08 13:19:09 · 1119 阅读 · 0 评论 -
PC,虚拟机,开发板相互访问网络配置以及挂载NFS
开发板,pc,虚拟机相关IP设置:虚拟机:ifconfig eth1 192.168.200.208 netmask 255.255.255.0route add default gw 192.168.200.10NFS配置:编辑/etc/exports,在最后一行加入:mkdir /xwm/xwm *(rw,sync,no_root_squash)启动相关服务:原创 2014-03-08 13:22:50 · 743 阅读 · 0 评论 -
C语言按行读取实际字符
当使用fgets(buf,size,fp)函数读取文件中的行时,最后一行不包含换行符,那怎么让其它行也不包含呢?这么整char buf[50];while(!feof(fp))//如果文件没有到达末尾则循环{ fgets(buf,50,fp);//读取一行 if(feof(fp))//检测文件,如果到达末尾就读取实际字符,因为此时不包含换行符 {原创 2014-03-08 13:19:36 · 1522 阅读 · 0 评论 -
关于C语言结构体成员变量偏移的一点思考
windows环境中,默认是4字节对齐。在VS2008环境中也可以进行设置对齐方式,同时下面的这句代码也可以进行设置预处理可以设置字节对齐方式 #pragma pack(1) 代表1字节对齐下面的处理方式以 1 字节对齐注意:如果结构体成员变量全部定义为 unsigned char型,也不用考虑字节对齐的问题。单字节的数据本来就是连续存放的一般来讲,关于成员原创 2014-03-02 14:23:03 · 1202 阅读 · 0 评论 -
关于feof函数使用的说明
函数原型: int feof(FILE *stream);功能:检测流上的文件结束符返回值:feof(fp)有两个返回值:如果遇到文件结束,函数feof(fp)的值为非零值,否则为0。什么时候结束了,当读取到那个字节为0xFF时,就结束了。EOF是文本文件结束的标志,在文本文件中都是以ASCII码字符表示的,取值范围 0-127 共128个字符,EOF的16进制代码为0x1A(十进原创 2014-03-02 14:18:59 · 11382 阅读 · 0 评论 -
C语言static关键字说几点
仅仅在C语言中。不谈C++,因为C++中类里面的static,又有很多东西,就不说了。1,用static声明的变量存放在静态存储区,这个东西只有程序结束时才没了。要不然一直存在,你可以随时改变它的值。2,用static修饰的变量或函数只在本文件起作用,在函数内部,作用域就在函数内部,依次类推。3,最想说的是,如果一个static变量放在头文件中,static int a = 2;在a.原创 2014-03-02 14:17:32 · 688 阅读 · 0 评论 -
inline关键字
inline就是个内联函数的关键字,只想说一点。有时候你想在头文件定义一个剪短的函数,发现有多个文件都包含这个函数的头文件,你肯定编译不过,提示什么函数重定义,这时,怎么办呢?在函数前面加个关键字inline就搞定了。原创 2014-03-02 14:15:53 · 571 阅读 · 0 评论 -
非对称加解密原理
非对称加解密需要两个秘钥:公开秘钥(publickey)和私有密钥(privatekey)。公开秘钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的秘钥,所以这种算法叫作非对称加解密算法。实现方案:加密原理:1,先产生一组随机数,32字节2,根据产生的随机数原创 2014-03-02 14:10:07 · 1182 阅读 · 0 评论 -
被遗忘的volatile关键字
1,是类型修饰符,用来修饰被不同线程访问和修改的变量,如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。2,作用:作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.3,使用场景: 优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份 一个中断服务子程序中会访问原创 2014-03-02 14:05:47 · 603 阅读 · 0 评论 -
消息认证码(MAC)的实现原理
一般密码相关的算法,个人是很难实现的,我们可以参照权威机构提供的方案,我想说美国标准与技术研究院 ,NIST(National Institute of Standards and Technology)。今天谈到的MAC,使用NIST提供的公开800-38B算法文档。这个MAC算法是基于对称密钥块算法,故称之为CMAC,还是使用了AES。算法原理:1,根据输入的key,产生两个子ke原创 2014-04-27 20:40:36 · 7766 阅读 · 0 评论