博文

标准 C I/O(2010-07-16 14:19:00)

摘要:标准 C I/O clearerr() 清除错误 fclose() 关闭一个文件 feof() 如果到达文件尾(end-of-file)返回"True"(真) ferror() 检查一个文件错误 fflush() 书写输出缓存的内容 fgetc() 从流获取一个字符 fgetpos() 获取文件位置指针 fgets() 从一个流获取一串字符 fopen() 打开一个文件 fprintf() 打印格式化的输出到一个文件 fputc() 写一个字符到一个文件 fputs() 写一个字符串到一个文件 fread() 从一个文件读取 freopen() 用一个不同的名称打开一个存在的流 fscanf() 从一个文件读取一个格式化的输入 fseek() 在文件中移动到一个指定的位置 fsetpos() 在一个文件中移动到一个指定的位置 ftell() 返回当前文件的位置指针 fwrite() 写入一个文件 getc() 从一个文件读取一个字符 getchar() 从STDIN(标准输入)读取一个字符 gets() 从STDIN(标准输入)读取一个字符串 perror() 显示当前错误的一个字符串版本到STDERR(标准错误输出) printf() 写格式化的输出到STDOUT(标准输出) putc() 写一个字符到一个流 putchar() 写一个字符到STDOUT(标准输出) puts() 写一个字符串到STDOUT(标准输出) remove() 清除一个文件 rename() 重命名一个文件 rewind() 移动文件位置指针到一个文件的开始处 scanf() 从STDIN(标准输入)读取格式化输入 setbuf() 设置一个指定流的缓冲区 setvbuf() 设置一个指定流的缓冲区和大小 sprintf() 写格式化的输出到缓冲区 sscanf() 从一......

阅读全文(1591) | 评论:0

vitural function (多态)简单应用(2010-07-15 12:20:00)

摘要:基类: class human{  public:         int getHumanType{ return m_iType; }          vitual printHumanType() {};   private:       int m_iType; };   子类: class yellowHuman: public human{ public:   vitual printHumanType()   {         cout << "it's yellow human\n";   } };   class whiteHuman: public human{ public:   vitual printHumanType()   {         cout << "it's white Human\n";   } };   class blackHuman: public human{ public:   vitual printHumanType()   {         cout << "it's blackHuman\n";   } };   // 应用 int main() {     human*  humanTest[3];    humanTest[0]= new yellowHuman;    humanTest[1]= new whiteHuman; ......

阅读全文(2100) | 评论:0

libcurl库介绍(2010-07-01 18:13:00)

摘要:原文:http://www.cppprog.com/2009/1209/185.html libcurl库是一个实现了各种客户端协议的网络编程库。目前它支持12种以上的协议,包括 FTP、HTTP、Telnet以及其他安全变体。 如果您有 10 年以上的脚本语言经验,您就会注意到它们的标记有很大的变化。Python、Ruby、Perl 等这些脚本语言不仅包含套接字层(C 或 C++ 中也有),还包含了应用层协议 API。这些脚本语言合并了高级功能,可以创建 HTTP 服务器或客户端。libcurl 库为 C 和 C++ 之类的语言添加了类似的功能,但是它可以在不同的语言之间移植。在所有它支持的语言中都能找到与 libcurl 相当的行为,但是由于这些语言的差异很大(设想一下 C 和 Scheme),提供这些行为的方式也很不相同。 libcurl 库以 API 的形式封装各种客户端协议,因此它可以被高级语言使用(如今已超过 30 种)。下面的示例研究使用 C 构建的简单 HTTP 客户端(适合构建 Web 爬行器)。 基于 C 的 HTTP 客户端 C API 在 libcurl 功能上提供了两个 API。easy 接口是一个简单的同步 API(意味着当您使用请求调用 libcurl 时,将能够满足您的请求,直到完成或发生错误)。多接口可以进一步控制 libcurl,您的应用程序可以执行多个同步传输,并控制 libcurl 何时何地移动数据。 该示例使用 easy 接口。该 API 还能控制数据移动过程(使用回调),但正如其名称所示,使用起来非常简单。清单 3 提供了 HTTP 的 C 语言示例。 使用 libcurl easy 接口的 C HTTP 客户端 #include <stdio.h>  #include <string.h>  #include <curl/curl.h>    #define MAX_BUF      65536    char wr_buf[MAX_BUF+1];  int......

阅读全文(6899) | 评论:1

CImg - 跨平台的C++的图像处理库(2010-07-01 18:10:00)

摘要:CImg是一个跨平台的C++的图像处理库,提供了加载、处理、显示、保存等一系列功能,其中的图像处理功能尤其强大。 主页地址:http://cimg.sourceforge.net/
下载地址:http://cimg.sourceforge.net/download.shtml   载时注意应该下载源码包,里面附带的大量的例程。而实际上CImg库只是一个头文件CImg.h,这个头文件里包含了CImg库所有的代码。
另外不要错过下载列表中的一个部分完成的http://cimg.sourceforge.net/CImg_reference_chinese.pdf......

阅读全文(5066) | 评论:0

[推荐]C/C++编程遇到问题和编码时要注意的地方(2010-07-01 18:00:00)

摘要:来源百度百科 http://baike.baidu.com/view/118570.htm?fr=ala0_1_1   遇到问题的时候:   1,不要怨天怨地。出了问题,当然有可能是系统的bug,API的问题,但是那些几率往往比你犯低级错误的几率要低多了,先从自己身上找原因,是不是自己写错了。   2,要掌握工具。最低限度你要会写Log,最好是Log和调试器结合。好 的工具可以大大的提高效率。以前有人跟我说,Dll不能调试,我发现可以;有人说多线程不能调试,我发现可以;有人说COM不能调试,我发现可以;有人说 IE插件不能调试,我发现可以;有人说OE插件不能调试,我发现也可以。当然,你确实会遇到不能调试的时候,当年我们做东芝芯片的嵌入程序,一个组都没有 一个仿真器和调试器,但是至少可以用Log嘛,无非是麻烦点。   3,分析问题要有逻辑。遇到问题可以先把所有的可能性都列出来,然后一个一个分析,肯定能找到原因的。   4,要学会隔离问题。问题涉及到的代码越多,越难以理解,问题越难以解决。遇到这样的情况,可以利用Log或者调试器,一行代码一行代码的给它们洗清嫌疑,这样很快你就可以找到出问题的地方。如果代码特别长,程序特别复杂,可以用二分法来做,效率很高。   5,千万不要懒惰,不要事事求别人。一次复杂的调试过程就像一部侦探剧,如果你有非常好的逻辑性,那这部剧的主角就是福尔摩斯,剧情一定非常精彩。我说这个是有巨大风险的,说真的我帮人调东西挺上瘾的,很有意思。但是我还是要告诉大家,一次高难度的调试之后,你的满足感绝对不亚于写了一个伟大的程序。 要想不遇到问题,写代码的时候:   1,要对写出来的代码负责。我很佩服那些写代码写100行都不执行一次的 高手,如果他们最后不被低级错误困扰的话我就更加的佩服了。我写程序几乎是写一行两行就要执行一次,每句话我都要确保执行效果跟我的预期一致。没错这样写的时候 可能慢一些,但是调试的时候很轻松,我可以很简单的确定哪些代码绝对没有问题。所以我写代码整体速度比一般人高。很多人学习新东西的时候喜欢把例子抄一遍,运行一下,改改,再运行。我喜欢一句一句的抄例子,抄一句两句执行一次,这样可以把例子透彻的理解,而且很难会遇到出现了问题找不到原因的时候。   2,函数体功能块不要过长。我认为我的智商并不高,我很难接......

阅读全文(1458) | 评论:1

C/C++ * 在输入流中的跳跃作用(2010-06-24 09:12:00)

摘要:e.g. scanf("%d %*d %d",&a,&b);
当输入为:1   2   3时,把1赋予a,2被跳过,3赋予b。

......

阅读全文(1656) | 评论:1

二叉树的先序遍历------零基础学数据结构讲座(2010-06-05 13:16:00)

摘要:二叉树的先序遍历的递归定义如下:如果二叉树为空,则执行空操作。如果二叉树非空,则执行以下操作: (1)访问根结点。 (2)先序遍历左子树。 (3)先序遍历右子树。     在二叉树先序的遍历过程中,对每一棵二叉树重复执行以上的递归遍历操作,就可以得到先序序列。例如,在遍历根结点A的左子树 {B,D,E,G,H,I}时,根据先序遍历的递归定义,先访问根结点B,然后遍历B的左子树为{D,G},最后遍历B的右子树为{E,H,I}。访问过 B之后,开始遍历B的左子树{D,G},在子树{D,G}中,先访问根结点D,因为D没有左子树,所以遍历其右子树,右子树只有一个结点G,所以访问G。 B的左子树遍历完毕,按照以上方法遍历B的右子树。最后得到结点A的左子树先序序列:B、D、G、E、H、I。   依据二叉树的先序递归定义,可以得到二叉树的先序递归算法。 void PreOrderTraverse(BiTree T) /*先序遍历二叉树的递归实现*/ {     if(T)                                                                     /*如果二叉树不为空*/     {         printf(“%2c”,T->data......

阅读全文(2484) | 评论:0

ACE开发者(2010-05-22 13:27:00)

摘要:http://www.acejoy.com/space/html/index.html......

阅读全文(1639) | 评论:0

(十六进制格式字符)char* 转 Hex(十六进制)(2010-05-21 14:59:00)

摘要: char szValue[] = "0x11"; int nValude = 0; sscanf(szValue,"%x",&nValude); printf("%x",nValue);......

阅读全文(6354) | 评论:0

乱七八糟的链接(2010-04-30 11:52:00)

摘要: forum.ragezone.com:这个网站有各种网游的介绍,主要是私服的架设,经常会有私服原代码下载。 plib.sf.net:基于ogl的3D库 新闻组服务器:news.cn99.com,msnews.microsoft.com,news.digitalmars.com BUG跟踪系统:bugzilla,clearquest 一个C++的好多有用的库,包括线程,套接字(其他的我记不得了):cplusplus.sf.net UDP库(实现可靠UDP传输和一些常用的UDP所用的功能,如文件传输等等):enet.cubik.org,raknet,opentnl 数据库读写:otl.sf.net,dtl.sf.net,libodbc++ ......

阅读全文(2030) | 评论:0