“程序设计”目录存档

在C语言程序中嵌入Lua脚本

2011年02月10日,星期四

第一次知道Lua语言,是上个月在书城的时候,看到一本名为《魔兽世界编程宝典》的书。心想,魔兽世界还能编程?难道是自己编一个魔兽世界出来?翻开一看,原来是编写插件,用的是一种叫Lua的脚本语言。只可惜我不玩魔兽世界,当然不会对开发魔兽世界插件感兴趣。最近在玩愤怒的小鸟,无意中发现这个游戏的地图和配置文件都是用Lua来写的,得了多少分、过了多少关等等完全可以通过修改相应的Lua脚本文件来作弊。于是心血来潮稍稍学习了一下Lua语言。

(更多…)

C语言中的round函数

2011年02月8日,星期二

C语言标准库中有没有round函数?答案是,可能有,也可能没有。这取决于你使用的编译器,更准确地说,是编辑器是否支持C99标准。

让我们简单回顾一下C语言标准的历史:C的第一个标准是由美国国家标准协会(ANSI)发布的。虽然这份文档后来被国际标准化组织(ISO)采纳并且ISO发布的修订版也被ANSI采纳了,但名称ANSI C(而不是 ISO C)仍被广泛使用。

(更多…)

用VBS监视进程创建和删除

2011年01月27日,星期四

微软脚本中心里的例子,用到了WMI事件,抄下来备查。

监视进程的创建,在每次创建新的进程时,临时事件消费程序都发出警报。

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredProcesses = objWMIService. _
    ExecNotificationQuery("select * from __instancecreationevent " _
        & " within 1 where TargetInstance isa 'Win32_Process'")
i = 0
Do While i = 0
    Set objLatestProcess = colMonitoredProcesses.NextEvent
    Wscript.Echo objLatestProcess.TargetInstance.Name
Loop

监视进程的删除,在每次进程终止时,临时事件消费程序都发出警报。

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredProcesses = objWMIService. _
    ExecNotificationQuery("select * from __instancedeletionevent " _
            & "within 1 where TargetInstance isa 'Win32_Process'")
i = 0
Do While i = 0
    Set objLatestProcess = colMonitoredProcesses.NextEvent
    Wscript.Echo objLatestProcess.TargetInstance.Name
Loop

参考链接:

  1. 监视进程的创建
  2. 监视进程的删除

C++ TR1正则表达式库

2011年01月21日,星期五

C++ TR1 regular expression library,这是昨天在EditPlus里看到的,以前一直都没听说过。我不喜欢C++,自然也不会去了解这方面的东西。

据说VS2008 SP1已经基本上完全支持了TR1库,最新的VS2010也支持,正好机器上装有Visual C++ Express 2010,于是测试了一下。

#include <iostream>
#include <string>
#include <regex>

int main(void)
{
    std::string str;
    std::tr1::cmatch res;
    str = "<h2>Egg prices</h2>";
    std::tr1::regex rx("<h(.)>([^<]+)");
    std::tr1::regex_search(str.c_str(), res, rx);
    std::cout << res[1] << ". " << res[2] << "\n";
}

能编译通过,输出2. Egg prices,结果也正确。但是TR1自己并非标准,他是一份草稿文件。然而他所提出的项目很有可能成为下次的官方标准。这份文件的目标在于“为扩充的C++标准函式库建立更为广泛的现成实作品”。当C++编译器开始支持得时候,非标准也许会变成事实的标准。

如果没记错的话这是本博客第一次写和C++有关的东西,但是纯粹是对这个EditPlus用的正则表达式库好奇而已,并不表示我对C++看法的改变。

Just use plain C, I don’t need C++ .

参考链接:

  1. TR1 Regular Expressions
  2. Getting started with C++ TR1 regular expressions

md5sum for windows

2011年01月12日,星期三

和前面一篇一样,Linux中md5sum命令的C语言简单实现。

[download id=57]