
C/C++
文章平均质量分 82
delphiwcdj
用代码改变生活
展开
-
How to Create a Windows NT/ Windows 2000 Service
最近看了一篇关于在NT/2000下创建服务程序的文章,将其翻译如下,帮助自己理解,其中可能有些地方翻译的不合适,希望读到此篇文章的朋友帮忙指正!(原文post在最下面)一个Windows的服务程序是一个特别设计用于与Windows NT/2000的SCM(服务控制管理器)进行通讯的EXE(可执行程序)。这个服务控制管理器(SCM)维护一个已安装服务和驱动服务的数据库,并且提供一个统一安翻译 2009-09-22 21:47:00 · 1479 阅读 · 0 评论 -
关于实现memcpy和memmove两个库函数的一点体会
最近在论坛上看了一篇关于阿里巴巴面试题的帖子,让自己实现memcpy库函数,要求考虑特殊情况,两段内存存在覆盖,以及指针为空的情况。下面是我对此问题的几点看法(可能还有理解不到的地方)和最终修改的代码。几点结论:1,memcpy实现从源source中拷贝n个字节到目标destin中,src源数据应该保留。2,memmove实现移动一块字节,src源数据可以不保留原创 2009-09-30 11:45:00 · 3551 阅读 · 6 评论 -
库函数strstr的实现
函数strstr的原型是char *strstr(char *str1, char *str2); 其功能是在str1中返回指定字符串str2的第一次出现的位置。 #include #include int main(void){ char *str1 = "Borland International", *str2 = "nation", *ptr; ptr = st原创 2009-09-30 12:45:00 · 9650 阅读 · 6 评论 -
库函数strcpy的实现讨论
在写C程序的时候,经常会用到串拷贝strcp这个库函数,它的主要功能就是将一串字符串常量拷贝到一个字符串变量里(而不是一个字符串常量,必须要有存储空间)。虽然这个函数的实现比较简单,但是最基本的东西往往容易被人忽视。 c99标准参考:7.21.2.3 The strcpy functionSynopsis1 #include char *strcpy(char *原创 2009-10-06 10:16:00 · 4813 阅读 · 3 评论 -
2009年华为软件设计大赛两道编程题
2009年华为软件设计大赛两道编程题 编程题(共2题,第1题40分,第2题30分。请上机编写程序,按题目要求提交文件。本试题采用自动测试用例进行评分,测试用例不对考生公开?,凡不满足提交要求导致不能编译或用例不通过,不予评分)。 1. 报数游戏 问题描述: 设有N个人围坐一圈并按顺时针方向从1到N编号,从第S个人开始进行1到M报数,报数到第M个人时,此人原创 2009-09-28 12:58:00 · 2295 阅读 · 3 评论 -
指针作为函数形参的思考
最近在论坛上看到有一篇帖子提问下面的问题: char * fun(char *p){ return p;}提问:此函数返回的是谁的值,是参数p的地址,还是p的值? 回答:p的值,但其值指向一个内存地址p是栈中的地址,和局部变量的地址一样,函数返回后这块内存就无效了。这种用法还是很常见的,比如链表中。虽然p是栈中原创 2009-10-06 15:30:00 · 7447 阅读 · 1 评论 -
Palindrome字符串问题
今天是中秋节,是亲人团聚的日子,虽然由于路途遥远不能回家与父母团聚,但是通过电话依然可以传达思念之情。祝福大家中秋节快乐!在网上看到一道轩辕科技的面试题(问题描述看下面的代码),实现的方法很多,我的一种解决方法如下:(扩展了一点儿功能,输出了其中一个Palindrome字符串)/**********************************************原创 2009-10-03 23:06:00 · 4399 阅读 · 1 评论 -
将一个十六进制字符串转换为十进制数值的问题
在程序中,我们有时需要将一个十六进制字符串转换为十进制数字。比如:char *ptr="0x11";int n=0;//我们想让n等于0x11,即17通常我们在C中,想将一个字符串转换为一整形数字,通常会使用下面的方法:char *ptr="123"; int n=0;n=atoi(ptr);printf("%d/n",n);//输出:123原创 2009-10-10 13:38:00 · 60589 阅读 · 12 评论 -
Windows编程中的剪贴板机制
记得以前在xp+vc6.0下写过一个简单的利用剪贴板机制向其他程序窗口中发送文本的小程序。最近在forum上看到一个朋友提问,如何实现向QQ2009的窗口上发送文本这一功能。然后我就试着按照以前的那个思路写了一段代码,如下: void CClipboardDlg::OnBnSend() { UpdateData(TRUE); //将文本内容复制到剪贴板 CSt原创 2009-10-11 19:51:00 · 5700 阅读 · 1 评论 -
Winsock frame in Win32 console application
最近利用空余时间在Win32 console application下重新写了一遍Winsock tcp通信程序,目的一是,以前在MFC下写过一个Socket通信程序,但是MFC帮我做了很多事情,所以想完全自己动手写一个与MFC功能一样的Socket通信程序;目的二就是帮助自己再熟悉一遍Socket通信的相关内容。下面对Socket通信的基本内容做一个复习:(更详细的内容g.cn)PS原创 2009-10-13 14:37:00 · 1993 阅读 · 0 评论 -
Function Calling Conventions and Name Decoration
今天在论坛上看到一位朋友问了一个如下的问题:#define CALLBACK __stdcall#define WINAPI __stdcall#define WINAPIV __cdecl#define APIENTRY WINAPI#define APIPRIVATE __stdcall#define P原创 2009-10-14 16:02:00 · 1155 阅读 · 0 评论 -
Pointers and the const Qualifier
There are two kinds of interactions between pointers and the const qualifier: We can have pointers to const objects and pointers that are themselves const. More details about this topic can be fou原创 2009-10-15 20:31:00 · 891 阅读 · 0 评论 -
蚂蚁爬杆问题分析
题目:有一根27厘米长的细木杆,在第3厘米,7厘米,11厘米,17厘米,23厘米这五个位置上各有一只蚂蚁,木杆很细,不能同时通过两只蚂蚁,开始时,蚂蚁的头朝向左还是右是任意的,它们只会朝前走或掉头,但不会后退,当任意两只蚂蚁相遇后,蚂蚁会同时掉头朝反方向走,假设蚂蚁们每秒钟可以走1厘米的距离。编写程序(C/C++),求所有蚂蚁都离开木杆的最小时间和最大时间。(百度面试题)原创 2009-10-17 21:59:00 · 3704 阅读 · 1 评论 -
Usage of typedef and define
刚接触vc6.0这个IDE的时候,发现MFC里面定义了很多新的变量类型,其实应该说是定义了很多已有类型的别名,刚开始学习的时候确实有点儿不习惯,后来想想为什么要重新定义一些新的类型名称呢?我自认为的好处是:(1)简化代码,使用方便;(2)方便移植。当我们要查找某个新定义的类型具体是什么的时候,一般在调试程序的时候,直接将鼠标放在我们所要查找的新类型的名称上,然后按F12即可以跳转到新类型定义的地方原创 2009-10-20 15:57:00 · 804 阅读 · 0 评论 -
基于结构体sizeof的字节对齐问题讨论
这些天经常在论坛上看到有人问关于结构体的sizeof的问题,要解答这个问题,首先就必须要了解字节对齐的问题。下面就对此部分内容做一个简要的小结,方便以后查阅。(部分内容参考网上的资料,如有错误请读者指正)。首先我写了如下一段计算结构体大小的代码,测试一下我们所知道的理论是否和实际相同。#include using namespace std;//设置为向原创 2009-10-21 19:20:00 · 1900 阅读 · 0 评论 -
异或(^)运算的妙用
现有1,1,2,2,3,3,....,n,n共2n个数,其中各个数字排列的顺序是任意的,是杂乱放的,即没有排序。现在删除了其中的一个数剩下了2n-1个数,求删除的那个数?可能大多数人的第一想法是:用2n个数的总和(n*(n+1))减去2n-1个数的总和,不错,想法是正确的。但是,放在计算机中考虑的话,此方法就不太可行了,先不考虑算法效率的问题,主要是因为2n个数的总和不知道具体有多大,所以原创 2009-10-26 11:27:00 · 1848 阅读 · 0 评论 -
How to Swap Two Int-type Integers
I remember the time just learning C language, in general, there will be an example in some textbooks which asks us to write a function to swap two int-type integers. As we know, there are many ways to原创 2009-10-28 17:21:00 · 885 阅读 · 0 评论 -
The differences between assert , TRACE, ASSERT, VERIFY
今天在路上遇见一个朋友,他急忙地问我关于断言assert的作用,原来他是要去参加面试。关于assert, TRACE, ASSERT, VERIFY这几个宏,以前在编程的时候总结过一些它们的用法,使用的时候比较简单,但是要详细完整地说出它们的作用还是查一下资料好。下面是查阅的一些资料将其整理如下:( 欢迎大家指正:) )From:《高质量程序设计指南——C++/C语言(原创 2009-11-07 13:47:00 · 950 阅读 · 0 评论 -
基于位运算的排序算法
今天偶然在论坛上遇到一道基于位运算的排序算法。一般牵涉到位运算大多数人都会感到头痛,因为人通常习惯与十进制打交道,而计算机才擅长与二进制打交道。将代码写成位运算的形式,可以提高代码的执行效率,但是却降低了代码的可读性,因此要想读懂关于位运算的代码,就必须了解它的一些基本用法和意义。下面程序可以实现对所输入的0~10000031的数字进行排序(最多可以输入10000032个数字)分析原创 2010-01-14 18:25:00 · 2203 阅读 · 0 评论 -
About the Usage of fseek and ftell
The following is a simple program that accomplishs the division of one file into two parts, in which what should be concerned is the usage of two function, fseek and ftell. [1] fseekHeader原创 2009-12-15 15:42:00 · 847 阅读 · 0 评论 -
The Algorithm on Combinations
In combinatorial mathematics, a combination is an un-ordered collection of distinct elements, usually of a prescribed size and taken from a given set. (An ordered collection of distinct elements would原创 2009-12-27 15:21:00 · 949 阅读 · 0 评论 -
一道面试题的多种想法
今偶然在论坛上遇到一面试题,虽然简单,但在各种解法中还是有很多值得借鉴的地方。本文目的在于锻炼思维,汲取一些好的思想。总结一下就是,首先根据问题设计数学模型,从而找到合适的算法;在代码书写方面要学会活用:布尔运算的返回值、||,&&逻辑运算、条件表达式、%求余运算、/除法运算等,从而可以使代码更加简洁。(wcdj 2010-3-10)题目如下:只允许使用一个循环,先输出1至原创 2010-03-10 17:26:00 · 1041 阅读 · 0 评论 -
Sequentials Containers
Sequential Containers 顺序容器 From C++ Primer fourth editionauthor wcdj 2010-3-12 Arbor Day容器是容纳特定类型对象的集合。vector类型是一种顺序容器(sequential container),它将单一类型元素聚原创 2010-03-12 20:23:00 · 811 阅读 · 0 评论 -
The Differences between Little-Endian and Big-Endian
在网络编程以及跨平台编程里面经常会提到Little-Endian和Big-Endian的概念,本文就此内容做个总结。 2010-3-13 wcdj 参考资料:http://bbs.chinaunix.net/viewthread.php?tid=823662# Little-Endian和原创 2010-03-13 21:26:00 · 821 阅读 · 0 评论 -
Stack Adaptor
There are five operations provided by a stack are listed as below:s.empty() Returns true if the stack is empty; false otherwise. s.size() Returns a count of the number of elements on the原创 2010-03-14 17:08:00 · 894 阅读 · 0 评论 -
int compare(char* dest,char* src)
09年华赛在成都的两道试题。 C语言实现:[1]给出一个函数,原型为 int compare(char* dest,char* src) 要求比较两个字符串(由dest与src字符指针标识) 1,如果两字符串所含字母完全相同,则逆序输出字符串并返回0; 2,如果两字符串所含字母相同(不区分大小写;A与a也算字母相同) ,则返回1 ;3,否则返回3原创 2010-03-15 10:56:00 · 3120 阅读 · 0 评论 -
SymmetricalString and AscendingNum
在论坛上遇到的两道华为面试题,试写如下:1, 判断一字符串是不是对称的,如:abccba。2,用递归的方法判断整数组a[N]是不是升序排列。[1]/*判断一字符串是不是对称的,如:abccba2010-3-15 wcdj*/#include #include #include #include bool Sym原创 2010-03-16 10:14:00 · 1188 阅读 · 0 评论 -
删除多余的空白符
编一个函数,输入一个字符串,要求做一个新字符串,把其中所有的一个或多个连续的空白字符都压缩为一个空格。空白包括空格、/t、/n、/r。问题来源:http://topic.youkuaiyun.com/u/20100316/10/2a58044a-a800-4551-9773-9dd28b07e271.html我的解法如下:/*编一个函数,输入原创 2010-03-17 15:57:00 · 2792 阅读 · 0 评论 -
The Usage of map::insert
From: C++ Primer P.313使用insert函数对map对象进行插入操作时,如果试图插入的元素所对应的键已经在容器中,则insert将不做任何操作。而且,带一个键-值pair形参的insert函数将返回一个pair对象,该对象包含一个迭代器和一个bool值,其中迭代器指向map中具有相应键的元素,而bool值则表示是否插入了该元素。/*2010-3-19 wcdj 10原创 2010-03-19 19:50:00 · 978 阅读 · 0 评论 -
A Word Transformation Map
C++ Primer P.317 2010-3-22 wcdjWell close this section with a program to illustrate creating, searching, and iterating across a map. Our problem is to write a program that, given one string原创 2010-03-22 22:13:00 · 1499 阅读 · 0 评论 -
关于返回引用的思考
[事情起因]一天在写代码的时候,突然想到返回对象的引用好像可以提高程序的执行效率,但在调试下面代码的时候发现一运行就会报错。 // [1]#include #include using namespace std;vector& Fun();int main(){ vector cvec; cvec=F原创 2010-03-23 23:12:00 · 1108 阅读 · 4 评论 -
对标准库string对象赋值的问题
[事情起因]本来是要写一段大小写字母转换的代码,因为要用到字符串,就选用了标准库的string类型。首先在调试下面一小段代码的时候,发现程序执行的结果和我想象的不同。声明了两个string对象s1和s2,用VC6调试时却发现,用s1对s2进行赋值后,s2直接定向于s1的串,即它们是相同的存储空间。在原创 2010-03-24 17:18:00 · 5043 阅读 · 0 评论 -
How to deal with Whitespaces in scanf, gets(in C) and cin, getline(in C++) ?
在写代码时,有时需要和程序进行交互,用户需要通过输入终端,一般是键盘输入一些数据。假设要输入一个字符串,常用的输入函数有,C中的scanf,gets等以及C++中的cin,getline等函数。本篇分别解释C中scanf和gets以及C++中cin和getline函数是如何处理输入中的空白字符的。 在很多词法/语法分析器中,空白字符(whitespace)指的是任意多个基本空白字符(包括空原创 2010-03-25 17:59:00 · 1269 阅读 · 0 评论 -
The C++ IO Library
本文介绍C++ IO标准库的基础知识。参考C++ Primer P.244 IO标准库提供的多种工具istream(输入流)类型提供输入操作。ostream(输出流)类型提供输出操作。原创 2010-03-26 21:02:00 · 1165 阅读 · 0 评论 -
Some essential problems in C
Here are some points that you may often meet when using c language. They are not difficult but they are error-prone. These issues are collected from my job interview and I am willing to share with you原创 2010-03-28 15:55:00 · 1100 阅读 · 4 评论 -
The File Functions in C
在平时写程序时,程序员经常要用到IO操作,用的最多的一般是与控制台进行交互(标准的输入输出),但往往也需要对已命名的文件进行读写操作。本文主要分析C语言对文件操作的支持,在以后的文章中再另外分析C++中标准的IO库。(2010-3-26 wcdj)[磁盘文件数据存储方式]实际上,文件是在计算机内存中以二进制表示的数据在外部存储介质上的另一种存放形式。文件通常原创 2010-03-26 14:43:00 · 708 阅读 · 2 评论 -
Bubblesort
昨天参加了华为赛门铁克科技有限公司的面试。分别经历了笔试、技术面试、电话面试、等待结果...笔试题主要是考察C语言,下来之后,发现自己的基础还不是很牢固,做错了很多不应该错的题。提醒自己做题首先要认真读题,理解题意以后再动笔,如果基础牢固,就可以很容易地看出此题考察的是什么,还要注意平时的积累,注意一些看似不起眼的问题,永远要牢记“天下大事必作于细”。此篇文章中,主要总结一下其中的一道编程原创 2010-03-28 12:01:00 · 1218 阅读 · 3 评论 -
关于const_cast(str.c_str())的使用问题
偶然一次在写代码时用到了const_cast(str.c_str()),后来在调试程序的时候发现了问题。本来VC6和gcc的string应该是在相互赋值时不拷贝的,只有当其中一个string对象改变之后,两个string对象才会指向不同的值。但是,在那段代码里强转之后,string变成了类似于引用的一种情况,两个string完全同质了,改变一个另一个也变了。出现问题的帖子:ht原创 2010-03-29 22:00:00 · 4145 阅读 · 0 评论 -
The set Type
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 A map is a coll原创 2010-04-12 19:25:00 · 1371 阅读 · 0 评论 -
The multimap Type
Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 As we know, b原创 2010-04-13 16:36:00 · 888 阅读 · 0 评论