随笔分类 - C/C++
C and C plus plus
摘要:转自:http://www.cnblogs.com/gakusei/articles/1585211.html为了支持Unicode编码,需要多字节与宽字节之间的相互转换。这两个系统函数在使用时需要指定代码页,在实际应用过程中遇到乱码问题,然后重新阅读《Windows核心编程》,总结出正确的用法。WideCharToMultiByte的代码页用来标记与新转换的字符串相关的代码页。MultiByteToWideChar的代码页用来标记与一个多字节字符串相关的代码页。常用的代码页由CP_ACP和CP_UTF8两个。使用CP_ACP代码页就实现了ANSI与Unicode之间的转换。使用CP_UTF8
阅读全文
摘要:一、绪 其实刚开始编程的时候我不太喜欢用Unicode编码,所以比较喜欢 VC6.0,即使使用VS2010,也会设置为未设置模式。 后来,没办法的接触了些Unicode的编程的东西,必须得研究字符集的转换,那个痛苦啊。二、字符集的转换 To Unicode ---------> MultiByteToWideChar To MBCS ---------> WideCharToMultiByte 除了这个,还有Unicode转UTF-8和UTF-8转Unicode,特么的参数记不住啊。三、使用ATL ATL中有两个宏:W2A、A2W 使用: 1、包含头文件 #i...
阅读全文
摘要:转自:http://www.cnblogs.com/stoneJin/archive/2011/09/16/2179248.htmlstrcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更广。void*memcpy(void*dest,constvoid*src,size_t
阅读全文
摘要:符号作用────────────────────────── %d十进制有符号整数 %i输入整数,可以是带前导0的八进制数或0x的十六进制数 %u十进制无符号整数 %f浮点数 %s字符串 %c单个字符 %p指针的值(内存地址) %e指数形式的浮点数 %x, %X无符号以十六进制表示的整数 %0无符号以八进制表示的整数 %g, %G自动选择合适的表示法━━━━━━━━━━━━━━━━━━━━━━━━━━格式字符串的一般形式为:[标志][输出最小宽度][.精度][长度]类型其中方括号[]中的项为可选项。各项的意义介绍如下: 1.类型类型字符用以表示输出数据的类型,其格式符和意义下表所示:表示输出.
阅读全文
摘要:一直以来都是从互联网获得知识,感觉没贡献过什么。最近做项目研究了一个算法,就写一个共享出来,给需要的人一些参考。说明:有一个40字节的数组,前38个字节表示数据,后两个字节表示校验值。校验值是前面38字节之和。如果前面38个字节全部是0xFF(255),则255*38 = 9690 => 0x25DA也就是说,即使前面38个字节都是最大的值,后面两个字节也是能保存校验值的结果。计算校验值是很简单的,你可以直接相加,也可以用for循环相加。问题是怎么分离结果。假如校验值是0x35DA,那么我们要把Arr[38] = 0x25,Arr[39] = 0xDA。我所解决的就是这个问题。下面直接看
阅读全文
摘要:是否还记得ppt上的这张图片呢?这个程序可以带参数,是不是和以前的程序不一样呢?下面我们就来实现,这可花了我半个小时的时间哦!!!首先,我们和以前写C语言程序一样,新建一个工程,工程的名字当然是vc啦然后选择A simple application,然后点击finish,完成工程的创建开始写代码啦,双击打开vc.cpp文件开始下面的代码,应该能看懂吧,嘿嘿 1 #include "stdafx.h" 2 #include "stdio.h" 3 4 int main(int argc, char* argv[]) 5 { 6 if (argc==1) 7
阅读全文
摘要:在学习C语言的时候,涉及到两个变量值的交换,其中用到临时变量。类似于:temp=a;a=b;b=temp;这样的语句,如果在没有临时变量的情况下,该如何做呢?网络上的人们给出了两种方法:一、异或法a=a^b;b=b^a;a=a^b; 二、加减法 a = a + b; b = a - b; a = a - b;其实我们看加减法更容易理解,也有许多人用这种方法,虽然这些方法可能用不到,但是了解下还是有必要的,至少要读懂别人的代码是吧。下面是一些个人的分析:首先从简单的加减法来进行学习测试。a=a+b;此时a为两个数之和,我们用sum来表示,这样就变成了sum=a+b;当b=a-b;这个步骤...
阅读全文
摘要:既然写了静态链接库,就顺带把动态链接库也学习下。创建一个动态链接库工程,名称为ConvertDynamicLib在cpp文件中写入下面的代码 1 #include "stdafx.h" 2 #include <stdlib.h> 3 #include <windows.h> 4 #include <stdio.h> 5 6 BOOL APIENTRY DllMain( HANDLE hModule, 7 DWORD ul_reason_for_call, 8 LPVOID lpReserved ...
阅读全文
摘要:自己有时候写程序,写了就丢了,根本没有什么代码的重用。看着那代码,每次都要重写,伤不起。最近看了下静态链接库和动态链接库的编写方法,个人还是比较喜欢静态链接库,虽然程序会更大,但如果不小心弄掉了DLL文件,就什么都不能用了。首先,创建一个静态链接库工程,名称为ConvertStaticLib这个静态链接库有一个函数,把二进制数转换为十进制数首先在StdAfx.h中添加1 #include <windows.h>2 #include <stdlib.h>3 #include <stdio.h>4 5 6 extern "C" void Co
阅读全文
摘要:包含头文件:#include <winsvc.h>以下以web服务为例: #include <winsvc.h>void CStartServiceDlg::OnBnClickedButton1(){ // 打开服务管理对象 SC_HANDLE hSC = ::OpenSCManager( NULL, NULL, GENERIC_EXECUTE); if( hSC == NULL) { TRACE( "open SCManager error"); return; } // 打...
阅读全文
摘要:所谓机器的机器码其实就是电脑的一些特征码,包括硬盘序列号、CPU编号、BIOS编号等等和硬件有关的编号。你可以用在VC++中获取这些编号,并用一定的算法将他们组合后,就生成了一个机器码,用这个机器码按照一定的算法生成一个注册码,这样就对你的软件进行了保护,使得只有拥有这个机器码的机器才能安装你的软件。获取硬盘序列号的方法如下(代码)以驱动器C为例: char m_Volume[256];//卷标名 char m_FileSysName[256]; DWORD m_SerialNum;//序列号 DWORD m_FileNameLength; ...
阅读全文
摘要:struct _iobuf { char *_ptr; //文件输入的下一个位置 int _cnt; //当前缓冲区的相对位置 char *_base; //指基础位置(应该是文件的起始位置) int _flag; //文件标志 int _file; //文件的有效性验证 int _charbuf; //检查缓冲区状况,如果无缓冲区则不读取 ...
阅读全文
摘要:1、类型不同bool 为布尔型BOOL 为int型2、长度不同bool 只有一个字节BOOL 长度视实际环境来定,一般可认为是int类型的大小4个字节3、取值不同bool 取值false和true,是0和1的区别BOOL 取值FALSE和TRUE,是0和非0的区别4、bool是标准C/C++数据类型,可取值true和false。单独占一个字节,如果数个bool对象列在一起,可能会各占一个bit,这取决于编译器。BOOL是微软定义的,用途是解决程序在C与C++中环境的差异,以下是FALSE/TRUE在windef.h的定义:#ifndef FALSE#define FALSE...
阅读全文
摘要:1 #include <stdio.h> 2 3 void main() 4 { 5 char c; 6 while((c=getchar())!='\n') 7 { 8 if( (c>='a'&&c<='z') || (c>='A'&&c<='Z') ) 9 {10 11 if( ( (c<'D') ) || (c>='a')&&(c<'d') )12 {13 c=
阅读全文
摘要:#include <stdio.h>//水仙花数//153=1*1*1+5*5*5+3*3*3//输入100-999之间的水仙花数void main(){ for (int m=100;m<1000;m++) { int a=(int)m/100; int b=(int)(m-a*100)/10; int c=(m-a*100-b*10); if (a*a*a+b*b*b+c*c*c==m) { printf("%d是水仙花数\n",m); } }}今天在某个人的blog...
阅读全文
摘要:1 #include <stdio.h> 2 #include <math.h> 3 4 int main(int argc, char* argv[]) 5 { 6 int m,i,k; 7 printf("please input the integer number:\n"); 8 scanf("%d",&m); 9 k=(int)sqrt(m);10 for (i=2;i<=k;i++)11 {12 if (m%i==0)13 {14 break;15 }16 ...
阅读全文
摘要:1 #include "stdafx.h" 2 3 int main(int argc, char* argv[]) 4 { 5 int a; 6 scanf("%d",&a); 7 if (a<=0) 8 { 9 printf("不要乱输\n");10 return 0;11 }12 for (int i=1;;i++)13 {14 a=a/10;15 if (a==0)16 {17 break;18 }19 ...
阅读全文
摘要:1 #include "stdafx.h" 2 3 bool IsLeapYear(int year) 4 { 5 if (year%4==0) 6 { 7 if (year%100==0) 8 { 9 if (year%400==0)10 {11 return true;12 }13 else14 {15 return false;16 ...
阅读全文
摘要:1 #include "stdafx.h" 2 #include <math.h> 3 4 5 6 int main(int argc, char* argv[]) 7 { 8 double f; 9 double c=0;10 printf("请输入华氏温度\n");11 scanf("%lf",&f);12 c=(f*1.0-32.0)*5/9.0;13 printf("对应的摄氏温度为 %lf \n",c);14 return 0;15 }主要涉及的是浮点数之间的运算。
阅读全文
摘要:1 #include "stdafx.h" 2 #include <math.h> 3 4 5 //根据输入的三条边判断是不是正确的三角形 6 bool IsTri(double x,double y,double z) 7 { 8 if (! ( (x+y>z) && (abs(x-y)<z) ) ) 9 {10 return false;11 }12 if (! ( (x+z>y) && (abs(x-z)<y) ) )13 {14 return false;15 }16 if (! ( (z+y...
阅读全文

浙公网安备 33010602011771号