
C/C++/C#
文章平均质量分 88
阳光岛主
阳光、快乐、创新
展开
-
程序猿节日快乐!
输入年月份,计算今天是今年的第几天?C代码(today.c):#include void main() { int year,month,day,days,i,d; printf("请输入年,月,日:\n"); scanf("%d,%d,%d",&year,&month,&day); days=0; for(i=1;i<month;i++)原创 2013-09-13 14:13:19 · 5308 阅读 · 2 评论 -
HTTP 返回状态值详解
当用户点击或搜索引擎向网站服务器发出浏览请求时,服务器将返回Http Header Http头信息状态码,常见几种如下:1、Http/1.1 200 OK 访问正常 表示成功访问,为网站可正常访问时的状态。2、Http/1.1 301 Moved Permanently 301重定向永久重定向 对搜索引擎相对友好的跳转方式,当网站更换域名时可将原域名作301永久重定向到新域名,原域名权重可传递原创 2013-09-07 06:49:39 · 15210 阅读 · 0 评论 -
各种编程语言的注释符
常见语言:c行注释:none块注释:扩展名:.c/.hc++行注释://这里是注释块注释:扩展名:.cpp/.hc#行注释://这里是注释块注释:xml注释:///这里是xml注释扩展名:.csvb行注释:'这里是注释块注释:none扩展名:.basjava行注释://这里是注释块注释:扩展名:.javavb.net行注释:'这里是注释块注释:nonexml注释:///这里是xml注释扩展名:.v原创 2012-09-28 16:54:05 · 15318 阅读 · 0 评论 -
VC Picture Control 图片点击事件
VC 中Picture Control 添加图片和点击事件,比C#等语言稍微较麻烦 一、添加图片1、在窗体添加Picture Control控件 2、代码添加图片 HBITMAP hBmpWSUS = (HBITMAP)LoadImage(AfxGetResourceHandle(), MAKEINTRESOURCE(IDB_BITMAP_WSUS), IMAGE_BITMAP, 0, 0, L原创 2012-07-29 19:15:00 · 13780 阅读 · 0 评论 -
VC char和TCHAR之间转换
char:计算机编程语言(c、c++、java、VFP等)中可容纳单个字符的一种基本数据类型。TCHAR:为了满足Unicode编码,对char的扩展,即_T(“str”)表示TCHAR类型C++支持两种字符串,即常规的ANSI编码(使用""包裹)和Unicode编码(使用L""包裹),这样对应的就有了两套字符串字符串处理函数,比如:strlen和wcslen,分别用于处理两种字符串char和TC原创 2012-07-27 15:53:45 · 17934 阅读 · 1 评论 -
CString 和 char* 类型转化
CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。 1、CString 转化成 char*(1) —— 强制类型转换为 LPCTSTR 这是一种略微硬性的转换,我们首先要了解 CString 是一种很特殊的 C++ 对象,它里面原创 2012-07-27 10:19:48 · 8768 阅读 · 1 评论 -
VC Tab Control 切换窗体
1. 新建一个MFC工程,取名xyTabControl,选择Dialog based,然后Finish。2. 删除对话框上默认添加的三个控件。添加Tab Control控件并在Property属性中设置ID为IDC_TAB1,添加变量m_tabctrl,类型为CTabCtrl。3. 在对话框的初始化函数OnInitDialog里面添加如下代码: m_tabctrl.InsertItem(0,"原创 2012-07-26 19:18:03 · 12694 阅读 · 0 评论 -
VC Picture Control显示BMP图片
VC对话框初始时,Picture Control显示BMP图片:BOOL CLoginDog::OnInitDialog() { CDialog::OnInitDialog(); HBITMAP hBitmap; //添加登陆窗口中的图片 //关联图片ID hBitmap =(HBITMAP)LoadImage(AfxGetInstanceHandle(),原创 2012-07-23 20:38:18 · 12425 阅读 · 0 评论 -
VC 调用外部程序接口
(1) system() 函数名: system 功 能: 发出一个DOS命令 用 法: int system(char *command); 备 注: system函数已经被收录在标准c库中,可以直接调用 返回值 =-1:出现错误 =0:调用成功但是没有出现子进程 >0:成功退出的子进程的id 样例: system("D:\\gam原创 2012-07-20 15:29:27 · 5402 阅读 · 0 评论 -
VC 读注册表获取安装程序
Windows 系统中,安装程序都可以在注册表 HKEY_LOCAL_MACHINE\SoftWare\Microsoft\Windows\CurrentVersion\Uninstall 获取,并且xp、vista、win7、win8都一样打开注册表命令:regedit,依次展开上述注册表路径,安装程序列表如下图: 获取系统安装程序列表:// 获取系统安装程序列表 BOOL CMyListC原创 2012-07-17 06:12:54 · 12841 阅读 · 7 评论 -
VC 读写注册表
近来由于需要在自己写的程序中对注册表进行操作。总结些经验,并做个一个DEMO供日后使用,现在把它拿出来和大家分享… 为了使用方便,把一些操作写成了函数,以便方便调用,具体代码如下所示: 一、定义 HKEY hKey;char content[256]; //所查询注册表键值的内容DWORD dwType=REG_SZ; //定义读取数据类型DWORD dwLength=256;原创 2012-07-11 15:51:50 · 9494 阅读 · 1 评论 -
数组中最大和的子数组
题目:输入一个整型数组,数据元素有正数也有负数,求元素组合成连续子数组之和最大的子数组,要求时间复杂度为O(n)。例如:输入的数组为1, -2, 3, 10, -4, 7, 2, -5,最大和的连续子数组为3, 10, -4, 7, 2,其最大和为18。背景:本题最初为2005年浙江大学计算机系考研题的最后一道程序设计题,在2006年里包括google在内的很多知名公司都把本题当作面试题。由于本题原创 2011-12-22 17:51:58 · 15848 阅读 · 14 评论 -
sizeof(空类或空结构体)
前天去理想国际某IT公司面试,看到了这样一道题:VC++里,有一个空类,没有任何成员变量或函数,请问其空类占多大字节空间?A、 0 B、 1 C、 4 D、8当时考虑了32bit和64bit机器,并且指针地址是int型原创 2011-07-07 12:19:22 · 12550 阅读 · 1 评论 -
__attribute__机制介绍
1. __attribute__ GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)__attribute__前后都有两个下划线,并且后面会紧跟一对原括弧,括弧里面是相应的__attrib原创 2011-06-24 23:10:00 · 34686 阅读 · 12 评论 -
Android模拟器无法上网问题
方法一Windows下,配置好Adroid环境变量后(如将d:/android-sdk-windows-1.0_r1/tools加入系统变量Path),在命令行窗口输入:(注:最新版的Android SDK安装,emulator命令一般在tools目录中,adb命令移到了plat原创 2011-04-20 16:49:00 · 17558 阅读 · 3 评论 -
Windows搭建Eclipse+JDK+SDK的Android
一 相关下载(1) java JDK下载:进入该网页: http://java.sun.com/javase/downloads/index.jsp (或者直接点击下载)如下图:选择 Download JDK 只下载JDK,无需下载jre.(2)eclipse下载 进入该网页: http://www.eclipse.org/downloads/ (或者直接点击下载:BT下载 HTTP下载原创 2011-04-20 16:47:00 · 106066 阅读 · 2 评论 -
简明教程:如何在Solaris操作系统上开发C 应用程序
1,开发C程序的必要工具和设置A,Solaris下的开发工具在solaris下开发C应用程序,缺省开发环境是Sun Studio。目前Sun Studio 11是Sun公司最新的C/C++/Fortran开发工具,这个工具已经安装在Unix体验中心的服务器上,我们可以直接使用。在Sun Studio 中,其中C程序的编译工具名称为cc。还有的就是make这个命令,make命令是Solaris安装后就自带了,不需要我们另外安装。B,设置环境变量在solaris下开发C应用程序,需要把编译器和make的路径加入转载 2011-04-14 17:48:00 · 6490 阅读 · 0 评论 -
QT 文件读写操作
#include #include 1.打开文件 QFile f( fn );//fn可以是一个相对路径或绝对路径 f.open(IO_);//一般不要IO_ReadWrite,很容易出现赃数据 //如果要在文件的后面添加内容要IO_WriteOnly|IO_Append //如果要清空原来的内容,只要IO_WriteOnly //IO_Translate用来读windows文件,linux下的回车换行是/n,windows下是/r/n 2.写文原创 2011-04-13 10:51:00 · 8033 阅读 · 1 评论 -
linux c程序中获取shell脚本输出
1. 前言 Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令。但是,system函数仅返回命令是否执行成功,而我们可能需要获得shell命令在控制台上输出的结果。例如,执行外部命令ping后,如果执行失败,我们希望得到ping的返回信息。原创 2011-04-12 19:17:00 · 12022 阅读 · 1 评论 -
VC工程中后缀为.cpp,.h,.rc,.dsp,.dsw
<br /> <br />.cpp 是源程序代码c++文件<br />.h 是包含函数声明和变量定义的头文件<br />.rc 是定义资源的资源脚本文件<br />.dsp 是工程文件,记录当前工程的有关信息<br />.dsw 是工作区文件,一个工作区可能包含一个或多个工程<br />...<br />(其它.clw .opt .aps等后缀文件,见下面说明)<br />.opt 工程关于开发环境的参数文件。如工具条位置等信息;<br />.aps (AppStudio File),资源辅助原创 2011-03-31 15:20:00 · 7107 阅读 · 0 评论 -
Windows消息机制VC
<br /> <br />在Windows中,用户或系统中所发生的任何活动被当作事件来处理,例如,用户按下了鼠标按钮,就产生一鼠标事件。对于所发生的每一个事件,Windows将其转换成消息的形式放在一个称为消息队列的内存区中,然后由Windows的消息发送程序选择适合的对象,将消息队列中的消息发送到欲接受消息的对象上。Windows的消息可分为四种类型: <br /> (1)输入消息:对键盘和鼠标输入作反应。这类输入消息首先放在系统消息队列中,然后Windows将它们送入应用程序的消息队列,使消息转载 2011-03-31 15:10:00 · 6463 阅读 · 0 评论 -
Win Unix Mac 等多种系统平台的宏定义
最近正在学习C++程序从 Windows 平台向 Unix 平台移植,参考了 qt 的宏定义文件Win Unix Mac 各种操作系统的宏定义#ifndef QGLOBAL_H#define QGLOBAL_H#define QT_VERSION_STR "3.1.2"/* QT_VERSION is (major原创 2011-03-24 13:22:00 · 13718 阅读 · 1 评论 -
从 Windows 向 Linux 迁移设备控制应用程序
通过认识 Microsoft Windows 和 Linux 操作系统设备控制的工作原理,简化从 Microsoft Windows 向 Linux 迁移设备控制应用程序。作者分析二者的差别,并给出 C/C++ 示例。如果读者开发过不同平台的设备控制应用程序,那么肯定了解 Windows 和 Linux 的设备控制方式的差别,从一个平台向另一个平台迁移应用程序相当复杂。本文分析两种操作系统的设备控制原理,探究从架构到系统调用的各个方面,重点比较二者差别。本文还给出一个迁移示例(用 C/C++ 编写),详细原创 2011-03-23 17:40:00 · 299 阅读 · 0 评论 -
将 Win32 程序移植到 Linux
对于这个问题,网上已经有很多资料给予了介绍,但是相比于这些信息,本文立足于个人的实践,将内容具体到开发环境和源代码,我觉得还是有很多值得总结和借鉴的。首先声明开发环境。Win32程序的开发环境是VS.Net 2008,编程语言是C;Linux使用的RHEL 5.4,GCC的版本是4.1.2,编程语言也是C。然后依次说明移植的对象:数据类型/字符串处理/系统调用/套接字/进程/进程锁/线程/线程锁/信号量/事件锁/条件锁/系统服务。1. 数据类型:在开发过程中,无论哪种平台,只使用最通用的数据类型char,u转载 2011-03-23 17:01:00 · 8539 阅读 · 0 评论 -
深入分析Windows和Linux动态库应用异同
<br /><br />摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。<br />但不同操作系统的动态库由于格式 不同,在需要不同操作系统调用时需要进行动态库程序移植。本文分析和比较了两种操作系统动态库技术,并给出了将Visual C++编制的动态库移植到Linux上的方法和经验。<br /> <br />1、引言<br />动态库(Dynamic Link Libr转载 2011-03-23 09:36:00 · 5897 阅读 · 0 评论 -
globalalloc、malloc和new的区别
<br /> <br />GlobalAlloc<br />是为了与Win16兼容才保留的,在Win32下不要使用。 全局内存对象使用GlobalAlloc函数分配,在Windows 3.X的时代,分配的内存可以有两种,全局的和局部的,例如GlobalAlloc和LocalAlloc。但在Win32的时代这些函数已经被废弃了,现在的内存只有一种就是虚存。在Win32中所有的进程所使用的内存区域是相互隔离的,每个进程都拥有自己的地址空间。而且系统使用了页面交换功能,就是利用磁盘空间来模拟RAM,在RAM中数据原创 2011-02-23 15:10:00 · 5906 阅读 · 0 评论 -
C++ 智能指针
智能指针(Smart Pointer),是一个来用存储指向动态分配(堆)对象指针的类。简单的说,它本身是一个类,这个类是用来存储对象指针。一、智能指针的介绍智能指针,就是具备指针功能同时提供安全内存回收的一个类。它是用一个对象来对指针进行建模,使之具有指针的特性,跟指针具有相同含义的 -> 和 * 操作.并且通过对象的构造函数(获取资源),析构资源(释放资源)来对资源进行管理,从而减少程序员对通过转载 2011-02-21 16:26:00 · 8070 阅读 · 0 评论 -
网络编程常见问题总结
在网络程序中遇到的一些问题进行了总结, 这里主要针对的是我们常用的TCP socket相关的总结, 可能会存在错误, 有任何问题欢迎大家提出. 对于网络编程的更多详细说明建议参考下面的书籍 《UNIX网络编程》 《TCP/IP 详解》 《Unix环境高级编程》 非阻塞IO和阻塞IO: 在网络编程中对于一个网络句柄会遇到阻塞IO和非阻塞IO的概念, 这里对于这两种socket先做一下说明原创 2011-02-21 16:23:00 · 5154 阅读 · 1 评论 -
va_start va_arg va_end 的原理与实例
<br /> <br />func( Type para1, Type para2, Type para3, ... ) <br />{ <br /> /****** Step 1 ******/ <br /> va_list ap; <br /> va_start( ap, para3 ); //一定要“...”之前的那个参数**ap指向para后的第一个可变参数。 <br /> <br /> /****** Step 2 ******/ <br原创 2011-02-16 21:23:00 · 5295 阅读 · 1 评论 -
linux线程-sysconf系统变量
了解系统的线程资源限制是使得应用程序恰当地管理它们的关键。前面已经讨论了利用系统资源的示例。当设置线程的栈大小时,最小值为PTHREAD_MIN_STACK。栈大小不应当低于由pthread_attr_getstacksize( )返回的默认栈大小的最小值。每个进程的最大线程数决定了能够为每个进程创建的worker线程的上限。函数sysconf( )用于返回可配置系统限制或选项的当前值。系统中定义了同线程、进程和信号量相关的多个变量和常量。在表6-8中,列出了部分变量和常量。变 量名字值(Name V原创 2011-02-16 21:11:00 · 8963 阅读 · 1 评论 -
C语言编译全过程剖析
一、 摘要 C语言编译的整个过程是非常复杂的,里面涉及到的编译器知识、硬件知识、工具链知识都是非常多的,深入了解整个编译过程对工程师理解应用程序的编写是有很大帮助的,希望大家可以多了解一些,在遇到问题时多思考、多实践。 一般情况下,我们只需要知道分成编译和连接两个阶段,编译阶段将源程序(*.c)转换成为目标代码(一般是obj文件,至于具体过程就是上面说的那些阶段),连接阶段是把源程序转换成的目标代原创 2011-01-18 10:43:00 · 6583 阅读 · 1 评论 -
正则匹配函数——regcomp和regexec
1.int regcomp(regex_t *compiled, const char *pattern, int cflags)这个函数把指定的规则表达式pattern编译成一种特定的数据格式compiled,这样可以使匹配更有效。函数regexec会使用这个数据在目标文本串中进行模式匹配。执行成功返回0。 regex_t:是一个结构体数据类型,用来存放编译后的规则表达式,它的成员re_nsub用来存储规则表达 式中的子规则表达式的个数,子规则表达式就是用圆括号包起来的部分表达式。 pattern:是指向原创 2011-01-12 11:50:00 · 13007 阅读 · 0 评论 -
select,poll,epoll用法
阅读本文前,请先参考: select,poll,epoll区别select用法poll用法epoll用法转载 2011-01-10 13:42:00 · 10926 阅读 · 0 评论 -
STL vector list deque区别与实现
1 vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存储。 优点:(1) 不指定一块内存大小的数组的连续存储,即可以像数组一样操作,但可以对此数组原创 2011-01-07 10:11:00 · 11270 阅读 · 0 评论 -
fmemopen, open_memstream, open_wmemstream
NAME fmemopen, open_memstream, open_wmemstream - open memory as streamSYNOPSIS #includeFILE*fmemopen(void*buf,size_tsize,constchar*mode);FILE*open_memstream(char**ptr,size_t*sizeloc);#includeFILE*open_wmemstream(wchar_t**ptr,size_t*sizeloc);fm转载 2011-01-06 19:42:00 · 6748 阅读 · 0 评论 -
C宏定义的小结
1,防止一个头文件被重复包含 #ifndef BODYDEF_H #define BODYDEF_H //头文件内容 #endif 2,得到指定地址上的一个字节或字 #define MEM_B( x ) ( *( (byte *) (x) ) ) #define MEM_W( x ) ( *( (word *) (x) ) ) 3,得到一个field在结构体(struct)中的偏移量 #define FPOS( type, field ) ( (dword) &(( type *) 0)-> f原创 2010-12-28 17:58:00 · 10392 阅读 · 0 评论 -
memcpy、strcpy、snprintf的区别
<br /><br />这些函数的区别在于 实现功能 以及 操作对象 不同。<br />strcpy 函数操作的对象是 字符串,完成 从 源字符串 到 目的字符串 的 拷贝 功能。<br />snprintf 函数操作的对象 不限于字符串:虽然目的对象是字符串,但是源对象可以是字符串、也可以是任意基本类型的数据。这个函数主要用来实现 (字符串或基本数据类型)向 字符串 的转换 功能。如果源对象是字符串,并且指定 %s 格式符,也可实现字符串拷贝功能。<br />memcpy 函数顾名思义就是 内存拷贝,实现转载 2010-12-20 16:37:00 · 5249 阅读 · 0 评论 -
UNICODE,GBK,UTF-8区别
UNICODE,GBK,UTF-8区别 简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与gbk就是不一样的,假设uncode为a040,gbk为b030,而uft-8码,就是把那个值表现的形式.utf-8码完全只针对uncode来组织的,如果G原创 2010-12-16 14:22:00 · 6038 阅读 · 0 评论 -
C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。2.从标准头文件说起某企业曾经给出如下的一道面试题:为什么标准头文件都有类似以下的结构? #ifndef __I转载 2010-12-16 12:45:00 · 6562 阅读 · 0 评论 -
Linux多线程Pthread学习小结
简介POSIX thread 简称为pthread,Posix线程是一个POSIX标准线程.该标准定义内部API创建和操纵线程.作用线程库实行了POSIX线程标准通常称为pthreads.pthreads是最常用的POSIX系统如Linux和Unix,而微软Windowsimplementations同时存在.举例来说,pthreads-w32可支持MIDP的pthread Pthreads定义了一套 C程序语言类型、函数与常量,它以 pthread.h 头文件和一个线程库实现。数原创 2010-12-08 14:54:00 · 47136 阅读 · 8 评论