C/C++/C#
文章平均质量分 71
HegcH
这个作者很懒,什么都没留下…
展开
-
GCC静态库的另一个问题
对于C++生成的静态库,按照一般的想法去链接,会出现所有的符号都无法找到的错误。这里所谓的一般的想法就是把源文件放在最后边,如:g++ -o test.exe -L"." -l"t" test.cpp,那么得到的错误信息为::test.cpp:(.text+0x31): undefined reference to `t::Test::Test()':test.cpp:(.text+0x3原创 2009-08-28 16:57:00 · 1141 阅读 · 0 评论 -
C语言写硬盘--接读硬盘
继续上一篇关于读取磁盘的问题(http://blog.csdn.net/HegcH/archive/2009/04/28/4134289.aspx),今天我用我的优盘试验了一下。我的优盘是FAT格式的,使用UltraISO提取为硬盘镜像之后跟我使用那个程序读取出来的数据进行对比,发现镜像的第 33个扇区数据时候与读取的数据开始完全一致。我找了不少关于MBR的内容看了,没有很明白,但是对照说明查原创 2009-05-23 13:42:00 · 1990 阅读 · 0 评论 -
C语言二叉树实现及搜索算法
本文利用C语言实现了简单的二叉树,每个结点只保存一个整数,并且,由于非常简单,树的根结点是确定的,而不是输入的。确定根结点以后,用户输入的每一个数都被insert(为什么不许使用CHA Ru啊!!!!!!!)到树中(-999表示停止),利用深度优先的方法。建立好二 叉 树以后,分别利用深度优先(DFS)和广度优先(BFS)进行了遍历,输出结果。需要注意的是,代码中btree表示binary原创 2009-05-05 15:20:00 · 3711 阅读 · 0 评论 -
C语言struct中的位域
位域的思想参考了http://hi.baidu.com/luckymouse2009/blog/item/e08f5d4e912b993eaec3abb5.html,我使用如下的例子来简单说明:#include static union{ struct { int c : 5; int b : 6; int a : 5; }b;原创 2009-05-01 12:54:00 · 1340 阅读 · 0 评论 -
C语言异或及文件操作之疑惑
异或,逻辑运算,运算规则为:T^F=T, T^T = F, F^F = F。并且有 a = b^c, b = a^c。因此可以简单的利用该方法加密解密。我使用了如下的程序:#include const char c = 0x49;int main(int argc, char *argv[]){ FILE *f = NULL; FILE *p = NULL; char原创 2009-05-04 21:16:00 · 2561 阅读 · 0 评论 -
Base64 Encode C语言实现
今天使用C语言实现了Base64的加密,Base64的理论参考了http://hi.baidu.com/gaojinshan/blog/item/a10d26f82b7b630ad9f9fde2.html的内容,但是实现没有参考,我可以保证。代码比较混乱,大家将就着看吧。主要方法是base64_encode,它需要两个参数,需要加密的字符串和它的长度(虽然长度也可以在该方法内得到,这一点参考了原创 2009-05-01 00:17:00 · 4808 阅读 · 0 评论 -
在Windows中读取硬盘
今天太无聊了,突然想直接使用C语言读取硬盘看看,看了下网上有使用biosdisk函数的,但是Windows下这个函数已经没有了(VS2005),后来在这个地方(http://www.cqzol.com/programming/c/200803/81345.html)找到了一个方法,利用CreateFile和ReadFile函数来操作。(WriteFile可以直接写扇区,太危险,我就不实验了)。利用原创 2009-04-28 21:06:00 · 2899 阅读 · 3 评论 -
C语言动态库的问题---Windows下使用VC
我记得有一种比较老式的方法是使用一个DEF文件来表明哪些函数是用来导出的,现在已经多不用该方式,而是使用__declspec(dllexport)的关键字。下边展示一种老方式的:/*第一个文件 x.h*/#include int print(int a);/*第二个文件 x.c*/#include "x.h"int print(int i){ printf("%d/n", i原创 2009-04-06 19:53:00 · 1232 阅读 · 0 评论 -
20皇后有多少解
利用八皇后的C语言实现一文中实现的方法计算各种不同的数目的皇后有多少种解,我最后得到了以下4个结果8皇后:耗时:0结果:92总共步数:3, 92010皇后:耗时:31结果:724总共步数:69, 61812皇后:耗时:750结果:14200总共步数:1, 683, 96415皇后:耗时:217828结果:2, 279, 184总共步数:337, 699, 759这里耗时是以毫秒计算(将所有的打印结原创 2008-12-24 11:33:00 · 2821 阅读 · 0 评论 -
Base64 编解码C语言实现
本文继续前文(http://blog.csdn.net/HegcH/archive/2009/05/01/4141125.aspx),前文讲述了如何实现Base64的编码,本文给出解码的代码。这里给出的代码是整个完整的编码和解码,将加密之后的串解密得到原来的字符串。具体代码如下:#include const char base[] = "ABCDEFGHIJKLMNOPQRST原创 2009-05-29 10:47:00 · 1870 阅读 · 5 评论 -
C语言Signal
Signal在Linux/Unix编程中很重要,但是在Windows中不那么重要,我在google上搜索的时候多数都会更Linux联系起来。Linux上的Signal数量比Windows上的多得多,Windows上只有7种,而根据网上某些人的说法,Linux上可以自己定义一个Signal,然后对其使用signal函数和raise函数,但是在Windows上不行,我查看了VC2005的CRT原创 2009-06-03 22:02:00 · 2555 阅读 · 0 评论 -
C++编写Windows服务
使用C++编写Windows服务,我所看的文章如下(红色的"="以内,来自http://www.programfan.com/article/2920.html):==============前一段时间我写了一篇通过写服务的形式来达到一些监视程序运行的目的的文章,至于如何在windows下写服务我没有详细介绍,今天就让我们原创 2009-06-03 13:42:00 · 4936 阅读 · 0 评论 -
GCC的make初探
使用make编译一个工程的有点自不必赘言,我也是刚开始试探性的试用一下,以MinGW作为对象,稍作参考。make中有很多Automatic Variables,可以帮助节省工作量,以下将其逐个写出,参考自The Linux Programmer’sToolbox, John Fosco, 第84页(英文版)。Variable Value$@原创 2009-08-24 13:42:00 · 984 阅读 · 0 评论 -
Boost初探
初次研究Boost库,本文内容主要基于http://www.stlchina.org/twiki/bin/view.pl/Main/BoostEnterBoost和http://www.boost.org/doc/libs/1_39_0/libs/filesystem/doc/index.htm。Boost中部分库需要首先编译为dll文件才能使用,而多数库来说是可以直接使用的(根据第一原创 2009-08-23 09:39:00 · 1281 阅读 · 2 评论 -
24点游戏算法及实现(后缀表达式思想)
一般而言,我理解的24点游戏是用4个数字经过数学运行,得到24. 一般推广版的应该使用扑克的52张牌(出去大小王),A表示1,K表示13.任意4张牌看是否能够组合得到24.我这里所设计的就是这样的情况,而不是任意的4个数。(因为这里需要用一个办法表示分数,而我使用了比较简单的一种,能表示范围较小,所以我只处理了1到13这个情况。虽然实现里边可以将13这个范围向上推一段。)4个数进行四则运算原创 2009-06-18 14:10:00 · 3899 阅读 · 2 评论 -
C++继承与引用
//test.hpp#ifndef TEST_H#define TEST_H#ifndef TEST_API#define TEST_API#endif#ifdef TEST_EXPORTS#undef TEST_API#define TEST_API __declspec(dllexport)#endif#ifdef TEST_IMPORTS原创 2009-08-24 14:59:00 · 1865 阅读 · 0 评论 -
C++关于Dll
如下三段代码://test.hpp#ifndef TEST_H#define TEST_H#ifndef TEST_API#define TEST_API#endif#ifdef TEST_EXPORTS#undef TEST_API#define TEST_API __declspec(dllexport)#endif#ifdef TEST原创 2009-08-24 14:58:00 · 1086 阅读 · 0 评论 -
使用xerces-c生成XML并输出
今天试用了xerces-c,我觉得果然好像还是不如Java版本的XMLapi好用。当然是个人愚见。对于创建XML实例还是比较简单的,而要输出到屏幕则着实费了一番脑筋。在baidu、google上都难以找到实例。后来我想到它的samples中有类似的例子,就下载源码来研究。最后做了一个非常简单的版本。代码如下:#include #include #include #i原创 2009-08-18 14:53:00 · 2694 阅读 · 0 评论 -
算法的力量
一直以来我们都说算法是很有力量的,以前程序员杂志也有一起专门讲算法的力量,李开复的文章就叫这个名字。我一直觉得算法很重要,但是一直没有深入研究过。今天看《编程珠玑》,第一个问题就体现出了算法的巨大力量。书上大致是这么一个故事:一个程序员要对拥有10 000 000条7位数的文件进行排序,而可使用的内存只有1M。这应该怎么做?一般来说,如果没有那个1M的限制,在现在的拥有大量内存的机器上,我原创 2009-06-12 22:44:00 · 1021 阅读 · 0 评论 -
VC版送别
别人的blog上看到的(http://user.qzone.qq.com/352629503/blog/1240579489),转载于此,我已测试,确实可行。#include "windows.h"#define ONE_BEEP 600#define HALF_BEEP 300#define NOTE_1 440#define NO转载 2009-06-12 23:21:00 · 1119 阅读 · 0 评论 -
XP下UDFS的问题,涉及注册表
;启用UDFS驱动,注意可能要修改注册表Root键的可访问权限 [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_UDFS] "NextInstance"=dword:00000001 [HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Enum/Root/LEGACY_原创 2009-03-07 19:20:00 · 1149 阅读 · 0 评论 -
VS2005命令行问题-manifest
默认情况下cl命令使用/MT选项,即静态链接libcmt.lib,因此文件一般较大;使用/MD选项,动态链接msvcrt80.lib,产生不可缺少的manifest文件,程序一般较小。在生成manifest文件之后(cl /MD 或者使用link等)可以使用如下的命令将manifest文件嵌入到exe文件中:mt.exe -manifest MyApp.exe.manifest -ou原创 2009-02-28 20:15:00 · 1016 阅读 · 0 评论 -
C#实现一个贝赛尔艺术
看C# Windows程序设计的第十三章,作者Petzold实现了一个bezier art,然后我稍微改变了一下颜色变换,觉得非查的神奇,这里将代码贴出来,需要申明的是,这个程序代码绝大部分是原作者的://BezierArt.cs//build BezierArt.cs PrintableForm.cs /main:BezierArtusing System;using System.Drawin原创 2008-11-29 22:03:00 · 1235 阅读 · 0 评论 -
vector的一点使用
这里主要是尝试使用了vector的一些基本方法以及将vector作为vector的模版来使用的两种情况,程序也很简单。如下:(因为使用哪个“插入代码”功能实在等不下去了,就直接粘贴了)#include #include #include using namespace std;int main(int argc, char *argv[]){ vector v; for (int i原创 2008-05-27 10:30:00 · 1025 阅读 · 0 评论 -
自己构建del命令
这里仅仅是构建一个简单的程序来删除bak文件,因为我在一个文件夹下边写C/C++程序,经常会产生bak文件,在别的地方都是些一个bat文件,调用CMD命令来删除bak文件,但是既然本身就在C程序的目录中,为何不自己写一个呢?于是,我就利用VC中的_finddata_t数据结构以及相关的文件查找方法写了一个程序,专门删除本目录下的bak文件。就当作是学习C语言的练习了。/* * 删除bak文件原创 2008-07-28 19:57:00 · 824 阅读 · 0 评论 -
Simpletron模拟器(三)
接下来,我们在Simpletron上实现一个更复杂一点的程序,计算1+2+3+......+99+100的值,我的设计如下:有的地方看上去我觉得啰嗦,但是一时间也找不到更好的方法,但是结果是正确的哦,5050,一个经典的数字。(PS:这里做这个程序的时候我改了下Simpletron.c,两个地方,原来的exec()方法为:void exec(){原创 2008-07-28 18:14:00 · 1331 阅读 · 0 评论 -
Simpletron模拟器(二)
接前一篇文章,这里给出我实现的Simpletron模拟器的源代码。我觉得代码中很多地方看着不舒服,但是现在将就能用了。首先是Simpletron.h:#ifndef _SIMPLETRON_H_#define _SIMPLETRON_H_#include #ifdef __cplusplusextern "C" {#endif#define READ原创 2008-07-28 16:33:00 · 2092 阅读 · 1 评论 -
Simpletron模拟器(一)
最近两天看《C大学教程》(Deitel父子),在第七章后便有一个专题:“构建你自己的计算机”,这是一个使用简单的C语言构建一个计算机模拟器的专题,我看了一下,觉得还不算难,决定做一下锻炼一下,于是今天中午花了点时间把它构建出来了,可能有的地方还不够精美,但是功能基本能用了。这里做的是一个很简单的,仅限于书上7.18和7.19,至于7.28的改进还没有做,暂时也不打算做了。稍微介绍一下原创 2008-07-28 15:32:00 · 2007 阅读 · 0 评论 -
使用CMD telnet登录虚拟机Linux ubuntu7.10
每次要做什么东西,跑到虚拟机里边来很麻烦,要想转出去还得用Ctrl+Alt,如果是作开发的话再打开 终端,当然也可以直接启动在textmode下,但是那个模式下边窗口很小,滚动之后上边的东西就看不见了,所以我一致在寻找通过Windows的CMD操作虚拟机中的linux的方法。终于找到了,那就是使用telnet。至于怎么安装呢,我按照如下方法(来自:http://www.met3or.原创 2008-07-21 13:48:00 · 2554 阅读 · 0 评论 -
Linux(Ubuntu)下编译内核模块
最近两天看 《Linux Device Drivers》3rd Edition,第一个例子讲述的是如何在2.6现边编译内核模块,但是今天拿来例子在ubuntu7.10下边编译,总是报错,没有搞清楚原因,于是我在网上找了一下,发现一篇文章,http://dev.csdn.net/article/84/84075.shtm,写的也是编译内核模块的事情,用的还是书上的那个例子,只是程序该了一下而已,但是原创 2008-07-18 14:43:00 · 2783 阅读 · 1 评论 -
Ubuntu下纯文本模式与图形模式的转换
从网上找了很多关于进入text mode的方法,最后使用如下方法:在终端下:sudo mv /etc/rc2.d/S30gdm /etc/rc2.d/K30gdm然后重新启动,直接进入text mode。当然如果要进入图形模式,使用 sudo /etc/rc2.d/K30gdm start 就行了。在图形模式下使用stop就回到文本模式了。不过啊,在虚拟机的界面中,进入tex原创 2008-07-20 15:30:00 · 4259 阅读 · 0 评论 -
string 函数列表
正如前一篇文章所讲,既然不清楚就要学习,这里列出string基本函数,当然也是转自别的地方:http://hi.baidu.com/weiyousheng/blog/item/d9917eddd20230dc8c102976.html begin 得到指向字符串开头的Iterator转载 2008-05-26 22:56:00 · 888 阅读 · 0 评论 -
百度的高级搜索方法 (2007 年初赛)
别的都不说了,除了该程序的出处:http://hi.baidu.com/xun1573/blog/item/6475cbd3da763031970a16be.html/**//*百度的高级搜索方法(2007年初赛)题面描述:你尝试过在百度上使用site inurl语法查询吗? 如果还没有的话可以试一下:)如输入 site:www.baidu.com inurl:news则会搜出所有在www转载 2008-05-26 23:11:00 · 1343 阅读 · 0 评论 -
汉诺塔的C语言实现以及冒泡排序
汉诺塔绝对是一个经典的算法题目,虽然当年也讲过,程序也不长,但是一直以来总觉得理解的不清楚,看程序也能明白什么意思,过一段时间程序忘了,想不起来的时候,就怎么都想不明白了,虽然说好像是那么回事,就是高不明白。借着前两天做八皇后的东风,顺便来理一下这个汉诺塔。园盘从上到下编号1, 2, ..., n,杆子从左至右A,B,C,A是from,C是to。我还是看了以前的java程序然后自己理解一下写的C程原创 2008-11-17 08:27:00 · 1214 阅读 · 0 评论 -
八皇后的C语言实现
唯一的一门语言课Java课上老师讲过这个问题,使用“回退”的方法,期末考试也考过,但是这么多年来一直没有亲自去做过它,即使偶尔想到也觉得太过麻烦,没有那个能力实现。但是前两天一个兄弟作出来了,我觉得我也应该作出来,要不然实在没面子,于是使用C语言来实现一下。一开始,我使用struct(A)来保存每一个皇后的位置,另外使用了一个struct(B)来保存当前列之前所有列中已放过皇后的位置,以防重复处理原创 2008-11-15 08:36:00 · 2217 阅读 · 1 评论 -
ARP--C语言Windows实现
首先说明,此文中很大部分都是转摘的。我首先介绍源程序来源: http://industry.ccidnet.com/art/1101/20050727/625891_1.html这里的程序是根据MSDN http://msdn.microsoft.com/zh-cn/library/aa366358(en-us,VS.85).aspx 上的程序改编,但是某些地方有少许问题,导致结果错误。我查看源原创 2008-11-09 00:17:00 · 2561 阅读 · 0 评论 -
关于动态调用dll的一些见识
在Windows编程中,除了在编译的时候链接lib文件跟dll挂上钩之外,还可以在运行的时候动态加载dll,这样更富于灵活性。这几天忙活这个问题,搞得焦头烂额,因为GetProcAddress()始终得不到我说需要的函数名的地址。但是今天终于弄出结果来了,虽然有的地方还没有搞明白。首先是__cdcel和__stdcall的问题。我就纠缠于这个问题上。最近几天都使用__stdcall,但是G原创 2008-10-13 13:24:00 · 1057 阅读 · 0 评论 -
C语言指针在VS中的不同?
前两天使用VS2005Team(盗版)弄C语言的时候,发现指针异常的难用,明明刚设立的变量都没有初始化就不为NULL了。搞得头昏昏的。 今天重新实验了一遍,又用刚装的VS2008Professional(正版)。请看如下代码: #include struct node{ int id; struct node *n;};struct node *n;int ma原创 2008-07-03 16:17:00 · 802 阅读 · 0 评论 -
命令行编译连接VC程序
如果程序使用了资源文件,在命令行下直接使用cl是没法将资源文件编译进去的。这里讲述我的经历。首先使用cl编译cpp文件,生成了obj文件;然后rc resource.rc编译资源文件,生成resource.RES文件;使用link /RELEASE /DEFAULTLIB:user32.lib gdi32.lib /OUT:SW.exe SecondWin32.obj Resource.RES生成原创 2008-09-06 21:57:00 · 1126 阅读 · 0 评论 -
自己构造扫雷的棋盘
突然想自己构造一个扫雷游戏,用什么实现都无所谓,最近在学Python,或许过段时间使用Python来做一个GUI的扫雷游戏也未可知,但是现在Python的很多语法、功能还不太清楚,使用java的话好象太麻烦了。以后可能会使用Java来做就GUI的,但是觉得好麻烦啊,或许别的GUI做起来也很麻烦。这里仅仅实现了随机生成棋盘的程序(C语言),有的地方比较啰嗦,如果有更好的方法,还希望各位大虾指教。使用原创 2008-08-31 15:08:00 · 1389 阅读 · 0 评论