自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 问答 (1)
  • 收藏
  • 关注

原创 Python修改文件的时间戳:创建时间,修改时间,访问时间

最近需要做一个修改文件时间戳的工具。要求:1.时间戳可以设置为几天内2.时间戳在工作时间内为随机时间参考网上的代码时发现了一些问题:文件如果权限不足,文件操作部分将会报错,从而直接跳过CloseHandle。下一次文件有修改权限时,运行py文件没有问题,但是运行py转成的exe文件时报错,报告该文件被占用(因为上一次运行时没有经过CloseHandle)。所以我在发生...

2019-11-16 18:14:42 3398 5

原创 例如:把一个char 组成的字符串循环右移 n 位,原来是 ”abcdefghi“,如果 n = 2,移位后应该是 ”hiabcdefgh“

#include#includevoid move(char *str,int n){int p=n%strlen(str);int len=strlen(str)-p;char temp[100];strcpy(temp,str+len);strcpy(temp+p,str);*(temp+len+p)='\0';strcpy(str,temp);}

2018-02-02 16:12:29 834

原创 typedef,#define

Typedef 在C语言中频繁用以声明一个已经存在的数据类型的同义字。也可以用预处理器做类似的事。例如,思考一下下面的例子:#define dPS struct s *typedef struct s * tPS;以上两种情况的意图都是要定义dPS 和 tPS 作为一个指向结构s指针。哪种方法更好呢?(如果有的话)为什么?这是一个非常微妙的问题,任何人答对这个问题(正当

2018-02-02 12:05:14 339

原创 一个单向链表,不知道头节点,一个指针指向其中一个节点,问如何删除这个指针指向的节点?

将这个节点复制成下一个节点的值,然后删除下一个节点 node *p; // 当前节点node *q;q = p -> next;p.data = q.data; // 复制q节点到pp -> next = q -> next; // 删除qfree(q);

2018-02-02 11:22:38 3428 2

原创 同步IO与异步IO

异步文件IO也就是重叠IO。在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行。而异步文件IO方式中,线程发送一个IO请求到内核,然后继续处理其他的事情,内核完成IO请求后,将会通知线程IO操作完成了。如果IO请求需要大量时间执行的话,异步文件IO方式可以显著提高效率,因为在线程等待的这段时间内,CPU将会调度其他线程进行执行,如果没有其他线程需

2018-02-02 10:52:48 196

原创 c语言分配内存方式有哪些?c语言中常见的内存错误有哪些?

内存分配方式有三种:  1、从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。  2、在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。  3、从堆上分配,亦称动态内存分配。程序在运行的时

2018-01-26 10:47:01 470

原创 sizeof与strlen的区别

一、sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间的大小。实际上,用sizeof来返回类型以及静态分配的对象、结构或数组所占的空间,返回值跟对象

2018-01-26 10:38:55 153

原创 系统调用与库函数的区别

系统调用(英语:system call),指运行在用户空间的应用程序向操作系统内核请求某些服务的调用过程。 系统调用提供了用户程序与操作系统之间的接口。一般来说,系统调用都在内核态执行。由于系统调用不考虑平台差异性,由内核直接提供,因而移植性较差(几乎无移植性)。库函数(library function),是由用户或组织自己开发的,具有一定功能的函数集合,一般具有较好平台移植性,通过库文件(静

2018-01-26 10:27:34 1155

原创 Linux操作系统的进程类型

针对用户进程,又可以分为交互进程、批处理进程和守护进程三类。 (1) 交互进程:由一个shell终端启动的进程,在执行过程中,需要与用户进行交互操作,可以运行于前台,也可以运行在后台。 (2) 批处理进程:该进程是一个进程集合,负责按顺序启动其他的进程。    (3) 守护进程:守护进程是一直运行的一种进程,经常在linux系统启动时启动,在系统关闭时终止。它们独立于控制终

2018-01-26 10:15:48 578

原创 嵌入式数据库

#include <stdio.h>#include <sqlite3.h>#include <string.h>#include <stdlib.h>int print(void* para, int columnCount, char **columnValue, char **columnName) //由用户处理查询的结果{ int j; for (j = 0; j <

2017-12-13 17:32:33 325

原创 网络编程

TCP/IP协议:1.网络层:Internet 协议(IP)该协议被设计成互联分组交换通信网,以形成一个网际通信环境。它负责在源主机和目的地主机之间传输来自其较高层软件的称为数据报文的数据块,它在源和目的地之间提供非连接型传递服务网际控制报文协议(ICMP)它实际上不是IP层部分,但直接同IP层一起工作,报告网络上的某些出错情况。允许网际路由器传输差错信息或测试报文。

2017-12-10 23:12:26 229

原创 多线程编程

线程和进程的区别:进程:进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元。Linux系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。每个进程都是一个独立的运行单位,拥有各自的权利和责任。其中,各个进程都运行在独立的虚拟地址空间,因此,即使一个进程发生异常,它也不会影响到系统中的其他进程。线程:线程是进程的一个执行流,

2017-12-09 23:56:46 175

原创 进程间通信

进程通信方式有:无名管道、有名管道、信号、3种系统IPC(信号量、消息队列、共享内存)、套接字(socket),共7种。无名管道(pipe):无名管道数据只能单向流动,具有固定的读端和写端,而且只能在具有亲缘关系的进程间使用。有名管道(fifo) :有名管道数据只能单向流动,但是它允许无亲缘关系进程间的通信。信号(signal):信号是一种比较复杂的通信方式,用于通

2017-12-08 00:07:47 171

原创 进程控制编程

进程的生命周期:创建:   每个进程都是由其父进程创建,进程可以创建子进程,子进程又可以创建子进程的子进程运行:   多个进程可以同时存在,进程间可以通信撤销:    进程可以被撤销,从而结束一个进程的运行进程的状态:执行状态:进程正在占用CPU就绪状态:进程已具备一切条件,正在等待分配CPU的处理时间片等待状态:进程不能使用CPU,若等待事件发生则可将其唤

2017-12-06 23:01:30 152

原创 文件操作

Linux一点哲学,“一切皆为文件”;在Linux中对目录和设备的操作都等同于对文件的操作,都是使用文件描述符来进行的。Linux文件可分为:普通文件,目录文件,链接文件,设备文件。打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。1.系统调用-创建int creat(const cha

2017-12-05 20:47:35 160

原创 队列

1.队列  数据结构中,队列的概念直接来源于生活中的排队现象。排队讲究个“先来后到”,对应到数据结构的队列中,就被称为“先进先出”,(First in first out,FIFO)--先进入队列的也先从队列中被取出。   类比生活中的排队现象,容易发现队列是一个线性结构,一串结点按照顺序彼此按照顺序彼此相连。如果将人视为结点,就可以类比人们站成一字长龙排队购票的情形。  一个队列总是

2017-12-04 23:06:39 243

原创 结构体

1.在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:                       struct 结构体名{                                                         结构体所包含的变量或数组                                         

2017-12-04 22:56:49 182

原创 #define宏中#的用法

#include   #define STR(s)          #s  #define CONS(a, b)      (int)(a##e##b)       //aeb     输出2000 int main()  {  printf(STR(vck));  printf("\n");  printf("%d\n", CONS(2,3));   

2017-11-28 15:36:16 308

原创 线性表list

实现线性表的各个功能:InitList(*L):初始化操作,建立一个空的线性表L。ListEmpty(L):若线性表为空,则返回TRUE,否则返回FALSE。ClearList(*L):将线性表清空。GetElem(L,i,*e):将线性表L中第i个位置元素值返回给e。LocateElem(L,e):在线性表中查找与给定值e相等的元素,如果查找成功,返回该元素在表中的序号表示成

2017-11-24 18:55:05 291

原创 学生成绩管理系统

实现学生成绩的输入,输出,查询,排序,插入,修改。#include #include #includeint count=0;struct student{char name[10];int id;int math;int china;};typedef struct student STU;void show(){sys

2017-11-24 18:36:00 543

原创 指针与数组与函数

函数指针:把函数的这个首地址(或称入口地址)赋予一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。我们把这种指向函数的指针变量称为“函数指针变量”。例如: int (*pf)(); 表示pf是一个指向函数入口的指针变量,该函数的返回值(函数值)是整型。指针函数:在C语言中允许一个函数的返回值是一个指针(即地址),这种返回指针值的

2017-11-16 16:56:17 239

原创 C语言基础2

一、一维数组一维数组的定义格式为:类型说明符  数组名[常量表达式];  例如:  int a[10];  它表示定义了一个整形数组,数组名为a,有10个元素。1.在定义数组时对数组元素赋以初值。例如:int a[10]={0,1,2,3,4,5,6,7,8,9};2. 可以只给一部分元素赋值。例如:  int a[10]={0,1,2,3,4};    定

2017-11-13 20:16:47 294

原创 C语言基础与提高1

一、基本数据类型整型int整数,在目前绝大多数机器上占4个字节。TC环境中是2个字节单精度实型float单精度浮点数,一般是4个字节长双精度实型double双精度浮点数,一般是8个字节长字符型char字符,一般是1个字节长用来表示256个ASCII字符,或者0~255的整数枚举型enum\0:字符串结束例:int  i =

2017-11-09 20:19:15 230

原创 Linux基础学习

一、gcc工具链编译指令:gcc test.c -o test  /  gcc   -o  test  test.c生产test可执行文件编译:四个部分:预处理                           编译                           汇编                           连接1.预处理:gcc -

2017-11-08 19:10:11 198

原创 Linux第一次接触

在还没开始学习之前,嵌入式编程对于我来说是很陌生的。但在部分了解之后,我明白了嵌入式编程对于社会的重要性。大到汽车,小到手机,其中都有嵌入式,只不过这是隐藏在芯片中,不可见的。就像是人的心脏,带动了全身的机能运作。在学校中,我学习过c语言,在VC++下操作。这次则是在Linux下学习,第一次接触Linux环境,我有点措手不及。因为

2017-11-06 15:28:19 265

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除