printf

Linux下的微秒级定时器: usleep, nanosleep, select, pselect

痴心易碎 提交于 2020-03-31 00:38:16
Linux下的微秒级定时器: usleep, nanosleep, select, pselect 标签: linux null delay struct date 2012-02-07 23:29 4979人阅读 评论 (0) 收藏 举报 分类: Linux 系统编程(26) 版权声明:本文为博主原创文章,未经博主允许不得转载。 今天在公司代码中看到了使用select函数的超时功能作定时器的用法,便整理了如下几个Linux下的微秒级别的定时器。在我的Ubutu10.10 双核环境中,编译通过。 [cpp] view plain copy /* * @FileName: test_sleep.c * @Author: wzj * @Brief: * * * @History: * * @Date: 2012年02月07日星期二22:20:00 * */ #include<stdio.h> #include<stdlib.h> #include<time.h> #include<sys/time.h> #include<errno.h> #include<string.h> #include<unistd.h> #include<sys/types.h> #include<sys/select.h> int main( int argc, char **argv) {

二叉树的基本操作

余生颓废 提交于 2020-03-30 19:51:11
1 #include<stdio.h> 2 #include<stdlib.h> 3 4 #define MAXTSIZE 100; //二叉树的最大结点数 5 typedef char TElemType; 6 7 typedef struct BiTNode 8 { 9 TElemType data; //结点数据域 10 struct BiTNode* lchild; 11 struct BiTNode* rchild; //结点的指针域 12 }BiTNode, * BiTree; 13 14 //前序遍历建立二叉树 15 void PreOrderCreatBiTree(BiTree* T) 16 { 17 char ch; 18 scanf("%c", &ch); 19 if (ch == ' ') 20 { 21 *T = NULL; 22 } 23 else 24 { 25 *T = (BiTNode*)malloc(sizeof(BiTNode)); 26 (*T)->data = ch; 27 PreOrderCreatBiTree(&(*T)->lchild); 28 PreOrderCreatBiTree(&(*T)->rchild); 29 } 30 } 31 32 //前序遍历打印二叉树 33 void PreOrderTarverse(BiTree T

NOIP 前夕 模板整理

时间秒杀一切 提交于 2020-03-30 16:07:33
归并排序: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int a[1200],s[1200],n; 6 void megre_sort(int l,int r) 7 { 8 if(l==r) return ; 9 int mid=(l+r)/2; 10 megre_sort(l,mid);megre_sort(mid+1,r); 11 int i=l,j=mid+1,k=l; 12 while(i<=mid&&j<=r) 13 { 14 if(a[i]<=a[j]) 15 s[k++]=a[i++]; 16 else 17 s[k++]=a[j++]; 18 } 19 while(i<=mid) 20 s[k++]=a[i++]; 21 while(j<=r) 22 s[k++]=a[j++]; 23 for(int i=1;i<=r;i++) 24 a[i]=s[i]; 25 } 26 int main() 27 { 28 scanf("%d",&n); 29 for(int i=1;i<=n;i++) 30 scanf("%d",&a[i]); 31 megre_sort(1,n); 32 for(int i=1;i<=n;i++) 33 printf

wc.exe(c语言开发)

耗尽温柔 提交于 2020-03-30 14:00:36
github地址:https://github.com/vicky-3653/WC.git 一、工程介绍 wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。 实现一个统计程序,它能正确统计程序文件中的字符数、单词数、行数,以及还具备其他扩展功能,并能够快速地处理多个文件。 具体功能要求: 程序处理用户需求的模式为: wc.exe [parameter] [file_name] 基本功能列表: wc.exe -c file.c //返回文件 file.c 的字符数 wc.exe -w file.c //返回文件 file.c 的词的数目 wc.exe -l file.c //返回文件 file.c 的行数 扩展功能: -s 递归处理目录下符合条件的文件。(实现) -a 返回更复杂的数据(代码行 / 空行 / 注释行)。(实现) 空行: 本行全部是空格或格式控制字符,如果包括代码,则只有不超过一个可显示的字符,例如“{”。 代码行: 本行包括多于一个字符的代码。 注释行: 本行不是代码行,并且本行包括注释。一个有趣的例子是有些程序员会在单字符后面加注释: } //注释 在这种情况下,这一行属于注释行。 二、psp表格 PSP2.1

专题训练之树状数组

一曲冷凌霜 提交于 2020-03-30 09:18:20
推荐几个博客:https://blog.csdn.net/int64ago/article/details/7429868搞懂树状数组 https://blog.csdn.net/z309241990/article/details/9615259区间修改 https://blog.csdn.net/whereisherofrom/article/details/78922383完整版+题集 http://www.cnblogs.com/wuyiqi/archive/2011/12/25/2301071.html二进制思想求第k大数 http://www.cnblogs.com/oa414/archive/2011/07/21/2113234.html二分/二进制思想求第k大数 一维树状数组模板(区间求和、单点修改) 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int maxn=1e5+10; 6 int bit[maxn],n; 7 8 int lowbit(int x) 9 { 10 return x&(-x); 11 } 12 13 void add(int k,int num) 14 { 15 while ( k<=n ) { 16

GNU/Linux应用程序开发学习笔记(三)套接字编程

南笙酒味 提交于 2020-03-30 06:19:54
套接字编程的各级要素: `主机接口:网络地址ip `协议:特定的协议(TCP & UDP) `端口:client或server的进程终点 套接字 简单的说,套接字就是两个应用程序之间通信管道的终点,这个管道可以唯一的标志一条链接,而应用程序则通过套接字来操作这个管道通信。 通信过程 要想使不同主机的进程通信,就必须使用套接字,套接字是用socket()函数创建,如果需要C/S模式,则需要把server的套接字与地址和端口绑定起来,使用bind(),当上述操作完成后,便可使用listen()来监听这个端口,如果有其他程序来connect,那么server将会调用accept()来接受这个申请并为其服务。client是调用connect()来建立与server之间的连接,这时会使用传说中的三次握手来建立一条数据链接。当连接被建立后,server与client便可以通信了,通信可以使用read()/write(),send()/recv(),sendto()/recvfrom()等一些函数来实现,但是不同的函数作用和使用位置是不同的。当数据传送完后,可以调用close()来关闭server与client之间的链接。上述过程就是不同主机之间进程通信的大致过程,当然这只是一个概要,其中的细节还是很多的。 创建和清除套接字 创建套接字的原型如下 int socket(int domain,

Tiny4412之重力感应器驱动

冷暖自知 提交于 2020-03-30 02:07:17
一:Tiny4412 裸板重力感应驱动编写   整个编写过程大概分为如下几步:   (1)在底板上找到重力感应器的所在位置,找到芯片型号(我用的板子上重力感应器芯片型号为: MMA7660FC )   (2)通过型号查看重力感应器电路图,了解每个引脚的功能   (3)找到引脚对应的网标(EINT,SDL,SCL)配置其相应的gpio口   (4)配置芯片相关寄存器   (5)使用I2C来读取重力感应器相应寄存器的值   下面是整个驱动的简单流程图: 通过看底板我们知道了重力感应器的控制芯片型号为: MMA7660FC,接下来我们就在看看改芯片的电路图(如下): 由上图我们可以看出它的外部中断XEINT25,用到的i2c总线为SDA3、SCL3 通过网标我们可以看到它是怎么连接到核心板上的(soc) 由上图可知,XEINT25、I2CSDA3、SCL3所对应的gpio分别为GPA1_2、GPA1_3、GPX3_1,之后我们就可以配置gpio口为相应的功能 通过datasheet我们可以找到它的外部中断号为64,如下图: 简单了解了mma7660的电路图之后我们就需要看芯片的datasheet,了解里面寄存器的配置及功能 首先看一下整个芯片与我们核心板的连接图: 由上图我们可以看出,芯片连接到我们核心板(soc)的总共为三根线:INT( 中断信号),SDA、SCL

PL/0 词法分析

…衆ロ難τιáo~ 提交于 2020-03-29 20:25:04
  用 C 语言编写一个 PL/0 词法分析器 ,为语法语义分析提供单词, 使之能 把输入的字符 串 形式的源程序分割成一个个单词符号传递给语法语义分析, 并把分析结果 (基本字,运算符, 标识符 ,常数以及界符) 输出 。   PL/0 的词法分析程序 GETSYM 是一个独立的过程,其功能是为语法语义分析提供单词,把输入的字符串形式的源程序分割成一个个单词符号传递给语法语义分析。 其主要任务为: 1、滤空格;2、识别基本字;3、识别标识符;4、拼数;5、拼复合词;6、输出源程序。 PL/0 编译程序一般设置 3 个全程变量: SYM :存放每个单词的类别,用内部编码形式表示; ID : 存放用户所定义的标识别符的值; NUM :存放用户定义的数。 PL/0 语言的单词的种类分成基本字(亦称保留字)、运算符、标识符、常数、界符 5 个大类,以下是针对这 5 类单词的一种 EBNF 描叙:   < 无符号整数 > :: =< 数字 >{< 数字 >}   < 标识符 > :: =< 字母 >{< 字母 >|< 数字 >}   < 字母 > :: =a|b| …… |X|Y|Z   < 数字 > :: =0|1|2| …… |8|9   < 保留字 > :: = const | var | procedure | begin | end | odd | if | then |

词法分析

女生的网名这么多〃 提交于 2020-03-29 20:24:03
基本数据类型: int,double,point?, char, bool int: +-*/^|~& double: +-*/ point: * bool: ==, !=, &&, ||, ! 数组: [const] 语句: 条件,选择,循环,强制转移 条件: if/else 选择: switch case : 循环: for 函数: 类型+标示符+(*)+{*} 模板: Template<*> 结构体: struct,构造函数,析构函数,:: 注释: // 分隔符: ;, {} 包含: #include<> //输入输出流: cin, cout 宏:Define static main() 保留字:int, double, char, Point/->/%, const, bool , !=, <,>,=, ==, &&, ||, !, ^, &, +,-,*,/,,|,^,~,[], 转移控制:if/else, switch/case/:, for, break, continue 模板:Template<T> 自定义数据类型:struct, ::, 句子隔断符:;,{} 包含:#include<> 宏:Define 代码: lex.h: #define INT 0 #define DOUBLE 1 #define CHAR 2 #define POINT 3 #define

实验一 词法分析程序

≯℡__Kan透↙ 提交于 2020-03-29 20:20:56
实验一 词法分析程序实验 专业 商软2班 姓名 邝启彬 学号 201506110165 一、 实验目的 编制一个词法分析程序。 二、 实验内容和要求 输入:源程序字符串 输出:二元组(种别,单词符号本身)。 三、 实验方法、步骤及结果测试 1. 源程序名:词法分析 .c 可执行程序名:词法分析 .exe 2. 原理分析及流程图 3. 主要 程序段及其解释: #include<stdio.h> #include<stdlib.h> #include<string.h> char *word[6]={"begin","if","then","while","do","end"}; char *word2[18]={"|","dd*","+","-","*","/",":",":=","<","<=","<>",">",">=","=",";","(",")","#"}; void words(char ch[]); void signs(char ch[]); main() { char ch[10]; do { printf("\n请输入保留字(输入##时结束):"); scanf("%s",ch); if(ch==" "||ch=="\n") getchar(); words(ch); signs(ch); }while(ch!="##"); } void words(char