C
喜欢做我自己
这个作者很懒,什么都没留下…
展开
-
宏定义#define 和该文件下使用到的结构体成员的名称一样,导致失败
在后面使用到了一个结构体变量,它的名称也刚好是和宏定义的名称相同,这样就导致变异失败了,原因是宏定义的优先级比较高,会优先替换该目录下的文件里面相同名字的变量,导致后面使用到这个名称的使用都会被替换掉,导致编译失败。这种写法也属于宏定义名称的不规范, 默认宏定义的名称要全大写,结构体的成员默认用小写,这样就能避免冲突。在文件头定义了一个这个宏定义。原创 2023-04-25 18:18:44 · 314 阅读 · 0 评论 -
linux虚拟机设置共享目录和设置自适应屏幕大小的方法
之前一直用VM tools进行设置共享目录的,但是经常容易出错,设置不成功,后来找到了一个方法,用 open-vm-tools,看了下介绍,这个是开源的,而且还能解决虚拟机里面屏幕大小的问题,超级棒。下面介绍下使用方法:1、sudo apt-get install open-vm-tools 这个是用来安装open-vm-tools2、sudo apt-get install open-vm* 这个是用来安装一些依赖包的,不然无法生成共享目录3、若是要在开机是自动挂载共享文件夹,则需原创 2021-07-02 10:25:42 · 586 阅读 · 0 评论 -
C语言写链表,好久没写数据结构了,花十分钟写个链表
/*#!/bin/bash#shell编程实现冒泡排序read -p "please input enement:" -t 1read -a num echo num:$num array=(12 121 321 41 521)echo arrayfor(i=0;i<${#array[@]};i++)do for(j=0;j<${#array[@]};j++) do if [ ${array[$j]} -gt ${array[$i]} ] then.原创 2021-03-31 17:14:37 · 126 阅读 · 0 评论 -
用C语言自己实现strcat,strcmp,strcpy,超详细注释
char *mystrcat(char * dest, const char * src){ char *tmp = dest;//定义一个指针指向dest的开头位置,保存好起始位置 while(*dest != '\0') dest++;//指针指向dest的\0位置 while((*dest++ = *src++) != '\0');//将src的值赋值给dest,并判断指针是否已经指向了\0位置 return tmp;//返回dest的起始位置 }char *mystrncat(c原创 2021-03-31 16:46:35 · 192 阅读 · 0 评论 -
CPU卡的一个发卡详细过程
1.CPU卡发卡流程2.dc_request 响应3.dc_anticoll 防冲突4.dc_select 选择5.dc_pro_resethex 复位6.数据加密码 利用复位返回的数据,加密要写到卡里面的数据key memcpy(&Key[0], &recbuff[0], 8); memcpy(&Key[8], &recbuff[24], 8);加密key获得ExpKey ExpandKey((unsigned char*)Key, Exp原创 2021-01-15 10:46:51 · 1369 阅读 · 0 评论 -
关于unsigned char 类型的数据,按位取反~操作的问题完美解决
大家先来看一段代码#include <stdio.h>int main(){ unsigned char block = 4; unsigned char a = 0x00; unsigned char b = 0xff; unsigned char data[17] = "\x00\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x04\xFB\x04\xFB"; if((data[7] != (~data[3]))||原创 2020-12-31 11:12:49 · 1730 阅读 · 0 评论 -
16进制和字符串的相互转换
```cchar ptmp[128];void strtohex(char *in, u8* out){ int lengthp = 0; int lengthtmp = 0; int i = 0; memset(ptmp, 0, sizeof(ptmp)); memset(out, 0, 57); lengthp = strlen(in); for (i = 0; i < lengthp; i++) { if (in[i] <= '9') ptmp[i] = in[.原创 2020-05-19 18:00:26 · 205 阅读 · 0 评论 -
听说想看贪吃蛇的代码,我抽空就用C大概写了一份
#include <stdio.h>#include <stdlib.h>#include <stdbool.h>#include <Windows.h>#include <time.h>#include <conio.h> /*键盘输入获取*/#define STOP 0#define LEFT 1#...原创 2020-04-10 14:43:34 · 125 阅读 · 0 评论 -
BIOS时钟的读取和设置
#include<stdio.h>#include<bios.h> int main(){ long ori,newar; ori = biostime(0,0);//读取BIOS时钟数据 printf("%ld",ori); newar= biostime(1,500);//设置BIOS时钟 1表示设置,0表示读取 500表示时钟时间 ...原创 2019-11-27 17:26:27 · 1408 阅读 · 0 评论 -
C语言中的获取时间操作
#include<stdio.h>#include<time.h> int main(){ time_t Time; struct tm *t; Time = time(NULL);//获取以秒为单位,以格林威治时间开始的当前时间 t = localtime(&Time);//返回一个分解满足tm结构的指针 printf("lo...原创 2019-11-27 17:00:02 · 178 阅读 · 0 评论 -
getch(),getche(),getchar()三个输入函数的不同
#include<stdio.h>int main(){ char a,b,c; printf("getche() :"); a = getche();//用于从键盘读取一个字符并显示,然后直接运行下一句 printf("\n"); printf("getch() :"); b = getch();//用于从键盘读取一个字符但不...原创 2019-11-27 15:59:43 · 170 阅读 · 0 评论 -
一元二次方程的解的程序
数学公式:方程: ax^2+bx+c=0;解为 : x1= (-b+sqrt(b^2-4ac))/2a;x2 = (-b-sqrt(b^2-4ac))/2a;转换成编码语言表示:x1= (-b + sqrt(b^2-4* a*c)) / (2*a);x1= (-b - sqrt(b^2-4* a*c)) / (2*a);...原创 2019-11-27 15:41:26 · 1183 阅读 · 0 评论 -
求解两个数的最大公约数和最小公倍数
#include<stdio.h>int main(){ int a,b,c,m,t; scanf("%d %d",&a,&b); if(a< b) { t = a; a = b; b = t; } m = a *b; c = a%b; while(c != 0) { a = b; b = c; c = a%b; }...原创 2019-11-27 15:30:17 · 126 阅读 · 0 评论 -
五种常用的排序算法
//冒泡排序void mp(void){ int arr[] = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 }; int i,j; int tmp; for(i = 0;i < 15-1;i++) { for(j = i+1;j < 15;j++) { if(arr[i] > ...原创 2019-11-27 11:53:59 · 102 阅读 · 0 评论 -
链表的简单使用
链表分单向链表,双向链表和循环链表节点的插入有两种,头插法和尾插法其中头插法是只节点从头节点处插入尾插法指的是从链表的末尾插入#include <stdio.h>#include <string.h>#include <stdlib.h>typedef struct Node{ char buf[16]; struct Node * pre...原创 2019-10-31 15:24:39 · 141 阅读 · 0 评论