Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: c 的简单问题  新手 正自学c中  遇了个问题 求大神解释 谢谢！

回复:
user: user-1
content: scanf（"%f %f %f",&x1,&x2,&x3）；没有取地址

user: user-2
content: 取地址符爱上对方撒

user: user-3
content: 你应该用&x1,&x2,&x3接收你输入的value

user: user-4
content: scanf格式字符串中别加标点

user: user-5
content: printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方，而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。  在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。

user: user-6
content: 这个问题你仔细看看应该可以自己找出来的，，， 还有，代码不规范啊，最好不要直接写main，要加上类型，像这样# include <stdio.h>  int main(void) { 	float x1, x2, x3; 	printf ("请输入三个数 x1, x2, x3:\n"); 	scanf ("%f %f %f", &x1, &x2, &x3); 	printf ("%f %f %f\n", x1, x2, x3); 	 	return 0; }  关于scanf，楼主可以看看这个——http://blog.csdn.net/u012421456/article/details/18501309

user: user-6
content: 第六行，&x1，&x2，&x3

user: user-0
content: 补充一点   没有报错
user-0 提问: 字符数组问题

回复:
user: user-1
content: 看到帖子混点积分

user: user-2
content: 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……  推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

user: user-3
content: 我想，这些问题在任何一本C语言入门的书上都有讲解吧，不妨看看书，或者百度。

user: user-4
content: 怎样定义和使用字符数组？ char a[10]; for (int i = 0; i < 10; i++)     a[i] = 'a' + i;  怎样为字符数组赋初值？ char a[10] = "abcdefg"; char a[10] = { 'a', 'b', 'c', };  可以直接把一个数组变量直接赋值给另一个数组变量吗？ 不行，请用循环处理  而这一切，请好好看书。

user: user-5
content: 这个应该自己翻翻书。

user: user-0
content: 发错了 是除法总跳不出循环 运行错误 //大数除以大数?????????????????/ int Div(char a[],char b[],char c[]) { 	int icmp,i,div=0,j; 	char d[LEN]; 	char *pA,*pD;  	memset(c,'\0',LEN); 	memset(d,'\0',LEN); 	if(Compare(b,d)==0) 		printf("错误：被除数为零"); 	icmp=Compare(a,b); 	if(icmp==-1) 	{ 	//	strcpy(c,a); 		memcpy(c,a,LEN); 		return div; 	} 	 	if(icmp==0) 	{ 		memset(c,'\0',LEN); 		div=1; 		return div; 	} 	 	do 	{ 		Sub(a,b,d); 		div++; 	//	strcpy(a,d); 		memcpy(a,d,LEN); 		j=Compare(d,b); 	}while(j>=0); //	strcpy(c,d); 	memcpy(c,d,LEN); 	return div;  }

user: user-0
content: #include <stdio.h> #define LEN 300 int Input(char a[]); void Print(char a[]);  void Sub(char a[],char b[],char c[]); int  Div(char a[],char b[],char c[]);//返回值为商，余数为c  int Compare(char a[],char b[]);   //输入一个大数 int Input(char a[]) { 	char s[LEN]; 	int i,l; 	if(scanf("%s",s)==0) 		return -1; //	memset(a,'\0',LEN); 	for(i=0;i<LEN;i++) 		a[i]=0; 	 	l=strlen(s); 	for(i=0;i<l;i++) 		a[i]=s[l-i-1]-'0'; 	return 0; 	 	 }  //输出一个大数 void Print(char a[]) { 	int i,j; 	for(i=LEN-1;i>=0;i--) 		if(a[i]!=0) 			break; 	for(j=i;j>=0;j--) 		printf("%d",a[j]); 	printf("\n"); } //仅实现大数减小数，假设a>b void Sub(char a[],char b[],char c[]) { 	int i,carry=0; 	for(i=0;i<LEN;i++) 		c[i]=0; 	for(i=0;i<LEN;i++) 	{ 		if(a[i]<b[i]) 		{ 			carry=1; 			c[i]=a[i]+10-b[i]; 			a[i+1]=a[i+1]-carry; 		} 		else 		{ 			carry=0; 			c[i]=a[i]-b[i]; 		} 			 	} } //大数乘以大数 void Mul(char a[],char b[],char c[]) { 	int i,j,k; 	for(i=0;i<2*LEN;i++) 		c[i]=0; 	for(i=0;i<LEN;i++) 	{ 		for(j=0;j<LEN;j++) 		{ 			c[i+j]+=a[j]*b[i]; 			 			if(c[i+j]>=10) 			{ 				c[i+j+1]+=c[i+j]/10; 				c[i+j]=c[i+j]%10; 			} 			 		} 	}  }  void main() { 	char a[LEN],b[LEN],c[LEN],d[2*LEN]; 	int i; 	int div; 	Input(a); 	Input(b); //	Sub(a,b,c); 	i=Compare(a,b); 	printf("%d\n",i); 	div=Div(a,b,c); 	printf("商是:%d\n",div); 	printf("余数是:"); 	Print(c); 这是我写的大数除以大数的程序，为什么不成功？是哪里错了呢？经常跳不出while循环 	  	//==========test============// //	char c1[10]={1,2,3,4,5,6,0}; //	char c2[10]={9,0,0,0,9}; //	Print(a); }

user: user-6
content: 看书自己操作实践下了

user: user-7
content: 引用 2 楼 turingo 的回复:char a[81]; char b[81];  memset(a, '\0', 81); memcpy(b, a, 81);  引用 楼主 dwj1297679792 的回复:怎样定义和使用字符数组？怎样为字符数组赋初值？可以直接把一个数组变量直接赋值给另一个数组变量吗？已解答！

user: user-2
content: “变量赋值”和“变量初始化”不是一回事！ “变量赋值”发生在运行期，其写法遵循赋值语法规定。 “变量初始化”发生在编译期或运行期，其写法遵循初始化列表语法规定。

user: user-8
content: char a[81]; char b[81];  memset(a, '\0', 81); memcpy(b, a, 81);  引用 楼主 dwj1297679792 的回复:怎样定义和使用字符数组？怎样为字符数组赋初值？可以直接把一个数组变量直接赋值给另一个数组变量吗？
user-0 提问: 急求！VS2008 应用程序无法运行 并行配置不正确

回复:
user: user-0
content: 求解~！谢谢大神s~!!

user: user-0
content: 重装VS2008后问题消失

user: user-0
content: 不明确，加入是的话怎么解决呢？谢谢~！重装VS可行吗？   引用 3 楼 zhao4zhong1 的回复:.maniest文件坏了？

user: user-0
content: 试了，还是不行。。  引用 2 楼 user-2 的回复:管理员身份启动VS，再试试

user: user-1
content: .maniest文件坏了？

user: user-2
content: 管理员身份启动VS，再试试
user-0 提问: 关于曼德博集合

回复:
user: user-1
content: 真漂亮，回想起大学时tc写的分形程序了  上网搜搜吧，很多的。

user: user-2
content: 在http://www.codeproject.com搜“Mandelbrot”

user: user-3
content: 这个课题好，收藏了！

user: user-3
content: 分形，多重宇宙，哈！
user-0 提问: 中文汉字转成ascii码

回复:
user: user-1
content: 引用 9 楼 zhangwuji154 的回复:同一个汉字,不同的编码,有不同的值 比如：啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A

user: user-2
content: wchar

user: user-3
content: 同一个汉字,不同的编码,有不同的值

user: user-1
content: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> int main() {     int i,v;     char bs[33];     char b[33];     char hs[9];     char h[9];     char s[4];     char *e;  // 十进制整数转二进制串；     i=1024;     ltoa(i,b,2);     sprintf(bs,"%032s",b);     printf("i=%d,bs=%s\n",i,bs); // 十进制整数转十六进制串；     i=1024;     ltoa(i,h,16);     sprintf(hs,"%08s",h);     printf("i=%d,hs=%s\n",i,hs); // 十六进制字符串转成十进制数     strcpy(hs,"00000400");     sscanf(hs,"%x",&i);     printf("hs=%s,i=%d\n",hs,i); // 二进制字符串转化为十六进制字符串；     strcpy(bs,"00000000000000000000010000000000");     i=strtol(bs,&e,2);     ltoa(i,h,16);     sprintf(hs,"%08s",h);     printf("bs=%s,hs=%s\n",bs,hs); // 二进制字符串转化为十进制数；     strcpy(bs,"00000000000000000000010000000000");     i=strtol(bs,&e,2);     printf("bs=%s,i=%d\n",bs,i); // 十六进制字符串转成二进制串     strcpy(hs,"00000400");     sscanf(hs,"%x",&i);     ltoa(i,b,2);     sprintf(bs,"%032s",b);     printf("hs=%s,bs=%s\n",hs,bs); // ASC\GBK字符串转十六进制串     strcpy(s,"a汉");     i=0;     while (1) {         if (0==s[i]) break;         sprintf(hs+i*2,"%02X",(unsigned char)s[i]);         i++;     }     setlocale(LC_ALL,"chs");     printf("s=%s,hs=%s\n",s,hs); // 十六进制字符串转成汉字（GBK）及字符(ASC)     strcpy(hs,"61BABA");     i=0;     while (1) {         if (1!=sscanf(hs+i*2,"%2x",&v)) break;         s[i]=(char)v;         i++;     }     s[i]=0;     printf("hs=%s,s=%s\n",hs,s);      return 0;  } //i=1024,bs=00000000000000000000010000000000 //i=1024,hs=00000400 //hs=00000400,i=1024 //bs=00000000000000000000010000000000,hs=00000400 //bs=00000000000000000000010000000000,i=1024 //hs=00000400,bs=00000000000000000000010000000000 //s=a汉,hs=61BABA //hs=61BABA,s=a汉

user: user-4
content: 你可能想表达：怎样将单字节编码的汉字转成unicode编码，这个还比较实际！

user: user-4
content: 你将复数转成实数，有什么意义呢？

user: user-5
content: ascII 码范围是0-127的 汉字是多字节的。  ascii的范围不够表示汉字啊

user: user-0
content: 引用 3 楼 ForestDB 的回复:LZ得先看点编码的只是。  有问题请指教

user: user-6
content: LZ得先看点编码的只是。

user: user-0
content: unsigned char tmp[100]; strcpy(tmp,"中文"); for(i=0;i<strlen(Tmp);i++) {    sprintf( buffer+i*2, "%2.2x", Tmp+i ); }  我是这么处理的， 得出的ascii 有问题。

user: user-7
content: 你是问怎么当ascii码处理吧？中文是16位编码，直接当两个ascii码处理好了。如果转，中文信息不全丢了么。
user-0 提问: 这是一段C语言代码，我的预想和结果不同，虽然看了英文解释，但是还是没懂，求大神释疑，大家也可以先猜猜答案哈!英语解释后续给大家。

回复:
user: user-0
content: 唉，一时大意，怎么跑这里来了，丢人了，不过感谢大家回复

user: user-1
content: 随手搜索 哪怕是百度printf 你都能弄明白这个是输出结果是怎么回事  为什么就是不自己动手 非得别人喂你 少爷

user: user-2
content: 有那么多基础的C语言教材，楼主都没读过吗？
user-0 提问: 段违例求解

回复:
user: user-1
content: Windows： 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。  Linux： 进程意外退出会在当前目录下产生‘core’文件或形如‘core.数字’的文件比如‘core.1234’ 使用命令 gdb 运行程序名 core或core.数字 进入gdb然后使用bt命令 可以查看进程意外退出前函数调用的堆栈，内容为从上到下列出对应从里层到外层的函数调用历史。 如果进程意外退出不产生core文件，参考“ulimit -c core文件最大块大小”命令

user: user-2
content: 没什么好说的，哪里越界了，自己用debugger跟踪一遍。
user-0 提问: 程序中凭空出现tw2865_video_norm stVideoMode；请问tw2865_video_norm这是什么类型的啊？

回复:
user: user-1
content: 难道就没有头文件？ 难道LZ不知道有宏或者typedef这种东西？  终极解决方法：全文搜索tw2865_video_norm
user-0 提问: c编译连接程序加载 具体怎样的 

回复:
user: user-1
content: 有一本书，叫Linker and Loader，花了整整一本书来讲这个，LZ指望一个帖子就能讲清楚？ 如果嫌这本书太高大上了，还有本《程序员的自我修养》，可以一读。 至于那些文件，微软的特定的实现而已。

user: user-2
content: 请亲自用记事本打开.plg（VC6）或BuildLog.htm（VS20XX）文件一看究竟。  *.dsp(DeveloperStudio Project)：是VC++的工程配置文件,比如说你的工程包含哪个文件,你的编译选项是什么等等,编译的时候是按照.dsp的配置来的。 *.dsw(DeveloperStudio Workspace)：是工作区文件，用来配置工程文件的。它可以指向一个或多个.dsp文件。 *.clw：是 ClassWizard信息文件,实际上是INI文件的格式,有兴趣可以研究一下.有时候ClassWizard出问题,手工修改CLW文件可以解决.如果此文件不存在的话,每次用ClassWizard的时候绘提示你是否重建。 *.opt：工程关于开发环境的参数文件，如工具条位置等信息。 *.aps：(AppStudio File),资源辅助文件,二进制格式,一般不用去管他。 *.rc：资源文件。在应用程序中经常要使用一些位图、菜单之类的资源, VC中以rc为扩展名的文件称为资源文件, 其中包含了应用程序中用到的所有的windows资源, 要指出的一点是rc文件可以直接在VC集成环境中以可视化的方法进行编辑和修改。 *.plg：是编译信息文件,编译时的error和warning信息文件(实际上是一个html文件,一般用处不大)，在Tools->Options里面有个选项可以控制这个文件的生成。 *.hpj：(Help Project)是生成帮助文件的工程,用microsfot Help Compiler可以处理。 *.mdp：(Microsoft DevStudio Project)是旧版本的项目文件,如果要打开此文件的话,会提示你是否转换成新的DSP格式。 *.bsc：是用于浏览项目信息的,如果用Source Brower的话就必须有这个文件。如果不用这个功能的话,可以在Project Options里面去掉Generate Browse Info File,可以加快编译速度。 *.map：是执行文件的映像信息纪录文件,除非对系统底层非常熟悉,这个文件一般用不着。 *.pch：(Pre-Compiled File)是预编译文件,可以加快编译速度,但是文件非常大。 *.pdb：(Program Database)记录了程序有关的一些数据和调试信息,在调试的时候可能有用。 *.exp：只有在编译DLL的时候才会生成,记录了DLL文件中的一些信息。一般也没什么用。 *.ncb：无编译浏览文件(no compile browser)。当自动完成功能出问题时可以删除此文件，build后会自动生成。 *.c：源代码文件，按C语言用法编译处理。 *.cpp：源代码文件，按C++语法编译处理。 *.h是头文件，一般用作声明和全局定义。 *.sln:在开发环境中使用的解决方案文件。它将一个或多个项目的所有元素组织到单个的解决方案中。此文件存储在父项目目录中.解决方案文件，他是一个或多个.proj（项目文件）的集合。 *.vcproj 是vc的工程项目文件 .vcproj .sln 分别是VC2002以上工程文件和解决方案文件 .dsp .dsw 分别是VC6的工程文件和工程组文件 将VC7工程转换回VC6工程，换言之，就是将.sln/.vcproj这两个文件转换到.dsw/.dsp文件。 vc6打开dsp或dsw，vc2003,2005打开sln或vcproj VC6打开*.dsw文件,单击工具栏上的"!",然后你的文件夹里多了一个DEBUG文件夹里面有.EXE文件 在vc7里面打开vc6的工程时，它会提示你是否转换成vc7的格式，转换后就可以直接使用了。 转换后的工程，vc6就不认识了。 我使用vc.net 2003打开vc6的工程，提示要升级，我也选了yes to all ， 但是其实vc.net只是读取vc6的.dsw和.dsp中的信息并添加了.sln和.vcproj。 用vc.net打开过的vc6工程 dsw和dsp都没有改变。所以用vc.net打开过的vc6工程，虽然已经被“升级”其实 dsw和dsp并没有被改动，再打开时就不用dsw而用sln了。 这点做得很好，只是从vc6的工程文件中读信息，并不改，照样可以用vc6打开原来的dsw和dsp

user: user-3
content: pdb是调试信息文件，其他的类型可以百度或者google

user: user-4
content: 给出具体的例子我分析哈
user-0 提问: 无符号数组处理

回复:
user: user-1
content: unsigned char brdaddr[4][4]; unsigned char IP[17]; strcpy(brdaddr[0],"10"); strcpy(brdaddr[1],"2"); strcpy(brdaddr[2],"255"); strcpy(brdaddr[3],"255"); sprintf(IP,"%s.%s.%s.%s",brdaddr[0],brdaddr[1],brdaddr[2],brdaddr[3]);  作为一个C程序员，对  scanf,sscanf,fscanf  printf,sprintf,fprintf 这类函数的用法，还是要做到“拳不离手，曲不离口”的。

user: user-2
content: 你打错了吧，'10' 算什么，应该是值为 10。char addr[16]; unsigned char brdaddr[4]; brdaddr[0] = 10; brdaddr[1] = 2; brdaddr[2] = 255; brdaddr[3] = 255; sprintf(addr, "%u.%u.%u.%u", brdaddr[0], brdaddr[1], brdaddr[2], brdaddr[3]); puts(addr);
user-0 提问: 面试题 排序a[n] 我这么写是不是被鄙视了

回复:
user: user-1
content: 如果题目本身不是让你写个排序算法，我会优先用qsort 如果题目是让你写排序算法，那么搞清楚题意，是哪种排序算法，快排还是冒泡，除非题目要求写冒泡，那么LZ的代码才有讨论的可能，否则让你写快排却来个冒泡，显然不合题意 如果题目就是写你熟悉的排序算法，那么LZ写了冒泡，是可以理解的，不过索引处理错了（越界），还是有问题

user: user-2
content: 1. 你的代码格式极不规范.一看要么是古板的大学教授教出来的.要么老的一B的国产教科书.根本没有阅读的欲望. 2.for while 随意套用.极不规范. 3.多余的变量.  总结:  对于C/C++,与其他语言不同.这种题不能称为面试题.  最后就是如果你只是兴趣来学学,那么也无所谓.如果你是打算走这个方向就业的.那么你必须做彻底的改变.扔掉你的古董书.彻底摒弃你现在这中编码风格. 加油!

user: user-3
content: 你循环是 i = 0开始， 到 i = 9 结束。但是i + 1已经是10了

user: user-0
content: void sort(char *p,int num) { 	int i; 	char data; 	while(num--){ 		for(i=0;i<num;i++){ 			if(p[i]>p[i+1]){ 				data = p[i]; 				p[i] = p[i+1]; 				p[i+1] = data; 			} 		} 	} 	 	 }    确实是越界了。。

user: user-4
content: p[i+1]越界了！  “多一少一”问题占程序员常犯错误的10%以上！ 避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断，搬手指头心算验证一下程序到底应该写为 x、x-1、x+1中的哪个？ <、<=、==、>、>=中的哪个？
user-0 提问: 请教前辈高手：如何在osg中绘制一个扇形波束，并控制其绕圆心旋转扫描！！求指导！...

回复:
user: user-1
content: LZ先科普下osg是什么？

user: user-0
content: 不懂，有木有详细点的

user: user-2
content: 会用GDI+将一个带透明的PNG旋转360°不？
user-0 提问: 代码排版的艺术..

回复:
user: user-0
content: 引用 6 楼 a515360208 的回复:留个邮箱，发一份文档给你，还不错的、、、我自己在网上搜索一下吧....谢谢你了

user: user-0
content: 好几天没来了..谢谢各位了..(受宠若惊的赶脚.. )

user: user-1
content: http://en.wikipedia.org/wiki/Indent_style 这里有几乎所有的风格 对于C，有个indent工具，可以按需配置，在各种“风格”之间切换 同意LS的，it is a matter of taste

user: user-2
content: 关乎个人品味:it is a matter of taste

user: user-3
content: 赵老师（我没弄错吧？）这照片可真像我一位师兄啊。 这个发帖遇到了关键字审查不通过，结果我发了个半截帖。 然后连发三帖又被阻了，所以都没发后半截的心情了，呵呵。 风格只要统一就好，特别是一个团队中。

user: user-4
content: 比用什么风格更重要的是在任何地方，任何时候都坚持用一种风格。 比爱哪种美眉更重要的是在任何地方，任何时候都坚持爱一个美眉。

user: user-4
content: 在VS IDE中选中要整理格式的代码片断，按Alt+F8  astyle自动整理c,c++,java源代码格式命令行工具源代码。 用astyle --help查看使用帮助。 http://download.csdn.net/detail/zhao4zhong1/5605415

user: user-3
content: 4. 除了for/if/while等括号里面之外，相邻行的赋值等号纵向对齐，等号后要有一个空格

user: user-3
content: 我们在C语言课中所要求的风格为： 1. for/if/while/do/switch/case等都要正确缩进，缩进都使用TAB而非空格 2. 除了函数体之外，左大括号都在紧接行尾  3. 右大括号另起一行，反缩进一级

user: user-3
content: 程序员的水平体现在函数、宏和变量的命名上，体现在函数的参数和返回值设计上，无它。 Linux下有个程序叫indent，很好用。搜索一下indent和风格这两个关键字，能看到很多资料。 只要选择一个自己喜欢的风格就行。不过在团队中，要服从集体。 程序员的水平体现在函数、宏和变量的命名上，体现在函数的参数和返回值设计上，无它。 Linux下有个程序叫indent，很好用。搜索一下indent和风格这两个关键字，能看到很多资料。 只要选择一个自己喜欢的风格就行。不过在团队中，要服从集体。

user: user-5
content: 留个邮箱，发一份文档给你，还不错的、、、

user: user-6
content: 边写边总结吧。自己写的代码不是写了就写了，要在自己的代码上进一步修改。再看书，再修改，再看书，在修改。。。。

user: user-7
content: 多看一些大师经典的代码，慢慢的跟着学，慢慢的你就习惯了。

user: user-4
content: Google C++ 风格指南 - 中文版.chm 支持全文搜索 http://download.csdn.net/detail/zhao4zhong1/5040814

user: user-4
content: http://bbs.csdn.net/topics/380157851

user: user-8
content: 学习linux源码的版式就是很不错的选择。  引用 楼主 u013115296 的回复:各位是怎么排版的...想学习一下..有时候看到自己的代码很乱...还有有相关的书籍吗..
user-0 提问: 浮点数在计算机中存放形式的问题

回复:
user: user-1
content: 有必要了解的，多学点总不会坏

user: user-2
content: http://bbs.csdn.net/topics/390676437

user: user-3
content: 引用 6 楼 lin5161678 的回复:[quote=引用 2 楼 u012421456 的回复:] 浮点数无法精确存储，  可以的（个人觉得）有限的几个可以  绝大多数不可以 [/quote]  嗯，我说的不全面

user: user-0
content: 我以为他会和指针有很大的关联呢  谢谢各位了

user: user-4
content: 引用 2 楼 u012421456 的回复:浮点数无法精确存储，  可以的（个人觉得）有限的几个可以  绝大多数不可以

user: user-5
content: 找两篇博客，大概了解一下浮点数的存储格式(IEEE754)，大概知道是怎么回事就行了。 看不懂就先跳过，和后面的指针没有什么关系。

user: user-6
content: 了解一下就行了。学习存储方法。 如果是考研那就得好好琢磨了。 具体编程应用的话可以略过

user: user-7
content: 个人认为， 在需要的时候在学习关于浮点的内存布局就行了。 其他时候，就别管如何布局了。  可以先跳过。

user: user-3
content: 浮点数无法精确存储，  可以的（个人觉得）

user: user-8
content: 可以
user-0 提问: 【求助】关于C语言结构体

回复:
user: user-0
content: 引用 11 楼 u013984264 的回复:你有两个错我：（1）printf(" %c\n",TagTest.RFU);中%c是指输出单个字符，而你要输出的“0000”是字符串，要改成%s （2）把最上面的改成：struct Tag                                              {                                                 unsigned char RFU[16]="0000";                                              } TagTest;  //这个TagTest才是用struct Tag 结构体去定义的变量 你写的struct Tag TagTest｛｝结构体中，你的结构体名字是叫Tag TagTest，而不是Tag  恩。谢谢你！我刚看了，其实我还有个错误，unsigned char RFU[16]="0000";赋值放在花括号里面会报错，应该放在花括号和‘；’号之间赋值，或者在外面对字符串赋值。

user: user-1
content: 你有两个错我：（1）printf(" %c\n",TagTest.RFU);中%c是指输出单个字符，而你要输出的“0000”是字符串，要改成%s （2）把最上面的改成：struct Tag                                              {                                                 unsigned char RFU[16]="0000";                                              } TagTest;  //这个TagTest才是用struct Tag 结构体去定义的变量 你写的struct Tag TagTest｛｝结构体中，你的结构体名字是叫Tag TagTest，而不是Tag

user: user-0
content: 引用 7 楼 bEst_02 的回复:struct Tag {     unsigned char RFU[16]; }TagTest{"00000"};  TagTest{"00000"};中间缺个=号吧。 刚编一下应该是这样子。TagTest={"00000"};

user: user-0
content: 引用 8 楼 a515360208 的回复:[quote=引用 1 楼 oYinGui1 的回复:]  struct Tag  { unsigned char RFU[16]="0000"; } TagTest;  定义结构体时就进行初始化？？？[/quote]  问题找到了。就在这里。貌似不能在定义的时候给赋值初始化。

user: user-2
content: 引用 1 楼 oYinGui1 的回复: struct Tag  { unsigned char RFU[16]="0000"; } TagTest;  定义结构体时就进行初始化？？？

user: user-3
content: struct Tag {     unsigned char RFU[16]; }TagTest{"00000"};

user: user-4
content: ...................................

user: user-5
content: 引用 1 楼 oYinGui1 的回复: struct Tag  { unsigned char RFU[16]="0000"; } TagTest; C++11??

user: user-0
content: 引用 1 楼 oYinGui1 的回复: struct Tag  { unsigned char RFU[16]="0000"; } TagTest;  #include <stdio.h> #include <string.h> #include <stdlib.h>  struct Tag{ 	unsigned char RFU[16]="0000"; } TagTest;  struct Tag TagTest;  void main() { 	printf(" %c\n",	TagTest.RFU); } error C2143: syntax error : missing ';' before '=' error C2059: syntax error : '=' error C2059: syntax error : '}' error C2079: 'TagTest' uses undefined struct 'Tag' error C2224: left of '.RFU' must have struct/union type Error executing cl.exe.

user: user-2
content: 多看看书吧，

user: user-6
content: 看看书上是怎么写的先。

user: user-7
content: struct Tag  { unsigned char RFU[16]="0000"; } TagTest;
user-0 提问: c写一个函数，检查一个字符串是否是数字字符串

回复:
user: user-1
content: http://www.cplusplus.com/reference/cctype/isdigit/

user: user-2
content: 感觉遍历这个字符串，只要全都是数字字符就行了吧？

user: user-3
content: 刚刚疏忽了引用 11 楼 u013595256 的回复:int isdigitstr(char* str) {     if(strspn(str, "0123456789")==strlen(str))         return 1;     return 0; }

user: user-3
content: int isdigitstr(char* str) {     if(strspn(str)==strlen(str))         return 1;     return 0; }

user: user-4
content: #inclde<iostream>..........

user: user-5
content: BOOL    isdigitstr（char *x）； {     fif(NULL==x)    return  FALSE;     char *p=x;     while(*p)     {             if(*p<0x30&&*p>0x39&&*p!='.')                   return FALSE;            p++;     }     return TRUE; }

user: user-6
content: 有没有可能是小数呢？？？ 有没有可能是负数呢？？？ 这也是个问题。。。。

user: user-7
content: 比较简单的实现： #include <stdio.h>  int isdigitstr(char* str) { 	while(*str) 	{ 		if(*str<'0'||*str>'9')return 0; 		str++; 	} 	return 1; }  int main() { 	printf("%d",isdigitstr("12asd3123")); 	return 0; }

user: user-8
content: #include<stdio.h> int main() { 	void isdigitstr(char *); 	char str[30]; 	int k; 	gets(str); 	isdigitstr(str);//检查一个字符串是否是数字字符串 	getch(); } void isdigitstr(char *p) { 	int length; 	length=strlen(p);//统计输入字符串的有效字符长度 	while((*p)!=0) //逐个字符检查 	{ 		if((*p)>='0' && (*p)<='9')//如果出现数字，则字符串长度减1 			length--; 		p++;//指向下一个字符 	} 	if(length==0) 		printf("这是个数字字符串\n"); 	else 	   printf("不是数字字符串\n"); } 亲测，你真懒

user: user-9
content: #include <string.h>  int isDigitalStr(char *str) {	 	int len = strlen(str); 	char *s = str; 	int i = 0;  	while( '0' <= *s && *s <= '9' && i < len){ 		s++; 		i++; 	}  	if(i == len) 		return 1; 	else  		return 0;		 }

user: user-10
content: 楼主真懒。

user: user-11
content: isdigit, iswdigit int isdigit( int c );  int iswdigit( wint_t c );  Each of these routines returns true if c is a particular representation of a decimal-digit character.  Routine Required Header Compatibility  isdigit <ctype.h> ANSI, Win 95, Win NT  iswdigit <ctype.h> or <wchar.h> ANSI, Win 95, Win NT    For additional compatibility information, see Compatibility in the Introduction.  Libraries  LIBC.LIB Single thread static library, retail version  LIBCMT.LIB Multithread static library, retail version  MSVCRT.LIB Import library for MSVCRT.DLL, retail version    Return Value  isdigit returns a non-zero value if c is a decimal digit (0 – 9). iswdigit returns a non-zero value if c is a wide character corresponding to a decimal-digit character. Each of these routines returns 0 if c does not satisfy the test condition.  The result of the test condition for the isdigit function depends on the LC_CTYPE category setting of the current locale; see setlocale for more information. For iswdigit, the result of the test condition is independent of locale.  Parameter  c  Integer to test  Generic-Text Routine Mappings  TCHAR.H Routine  _UNICODE & _MBCS Not Defined _MBCS Defined _UNICODE Defined  _istdigit isdigit _ismbcdigit iswdigit     Character Classification Routines |  Locale Routines |  is, isw Function Overview
user-0 提问: 无连接的方式发送http报文？？？

回复:
user: user-1
content: 用raw socket，所有层次的头内容都得自行构造。 建议libpcap／libnet之类的库

user: user-2
content: 使用SOCK_RAW的话，IP头，tcp头等部分需要自己去生成。这样做写起来很累人也很麻烦，建议使用liburl

user: user-3
content: 使用pcap驱动，任意发送数据到网卡上
user-0 提问: linux下java调用so库的编码问题，急急急急急急！

回复:
user: user-0
content: 我不知道，就直接截图了， 有大神能解决下吗？

user: user-1
content: 而且这个问题应该发到linux板块

user: user-1
content: 为什么不发代码，而发图片？

user: user-0
content: 大神们，问题解决了，我java里面传参数到C的时候用的是jstring ，而c里面接收参数的时候用的是char，只要把jstring转换成char就正常了，然后C回传给java的时候，就把char转换成jstring，谢谢你们。

user: user-2
content: c的实现代码多贴点

user: user-1
content: linux的汉字编码是UTF-8,而windows上的汉字编码是GB2312,可能和这儿有关系

user: user-3
content: 我猜java字符串编码是utf8
user-0 提问: 新手提问，关于字符串输入长度判定

回复:
user: user-1
content: linux gcc编译通过 #include <stdio.h>  int check_num(char c) { 	if(c>='0'&&c<='9')return 1; 	return 0; }  int main() { 	int num[9]; 	int i=0; 	char temp; 	while((temp=getchar())!='\n') 	{ 		if(check_num(temp)&&i<9) 		{ 			num[i]=temp-'0'; 			i++; 		} 		else break; 	} 	if(i!=8)printf("Error	:	输入位数或数值错误 !\n"); 	else printf("输入正确\n"); 	return 0; }

user: user-2
content: 输入8位后按回车，测试显示没有问题

user: user-0
content: 解决了，谢谢！！

user: user-3
content: a= strlen(s) 少个分号

user: user-4
content: 引用 6 楼 lunugno 的回复:scanf("%s",s);    a= strlen(s) 你这个是语法错误  这种错误一般不用问 就算要问 也请提供代码+编译器错误提示  按照你顶楼的问法 是解决不了问题的

user: user-4
content: 引用 3 楼 user-5 的回复:char s[9]; scanf("%s",s);   你这样写s数组里面就最多只能存放9个字符（包括\n）。如果输入大于8个字符，加上个'\n'就放不下了。 建议把s设置大一些。反正最后strlen会通过判断'\n'来断定字符长度。别乱说 %s 不可能向数组 写入\n的

user: user-0
content: #include <iostream.h>  #include "platspub.h"  #include<stdio.h>   #include<string.h>  #include <stdlib.h>  #include<math.h>     int main(void) {   printf("%s\n", "请输入年月日（按格式20140101）");       int a,iY,iM,iD;    // int flag = 0;      char s[100];   char sY[5];   char sM[3];   char sD[3];      memset(sY,0,5);   memset(sM,0,3);   memset(sD,0,3);   memset(s,0,9);      FILE *fpt;     // clrscr();     scanf("%s",s);     a= strlen(s)   if (a!=8) { 	printf("%s\n", "Error!输入位数错误"); 	return 1; }   这是这个部分的代码 编译不通过，说if 不对

user: user-0

user: user-4
content: 不对的具体情况是怎样的 说清楚  不要等到大家给出许多具体方案之后  你都说行不通 结果是 你语法错误

user: user-5
content: char s[9]; scanf("%s",s);   你这样写s数组里面就最多只能存放9个字符（包括\n）。如果输入大于8个字符，加上个'\n'就放不下了。 建议把s设置大一些。反正最后strlen会通过判断'\n'来断定字符长度。

user: user-3
content: 提示错误是什么呀，没感觉什么不对呀

user: user-0
content: 请教一下 谢谢啊
user-0 提问: 求一个用WINAPI编写的扫雷源程序

回复:
user: user-0
content: 谢啦！但我怕写着写着就和别人的一样了。 我自己参考过一个程序，写了一半左右了，但感觉越来越像别人的程序。 这是我们的作业，马上要交了，怕被鉴定为抄袭，所以想找一个网上没有的版本 不过你的回答真的很有用。 引用 1 楼 turingo 的回复:参考http://www.cnblogs.com/hanxi/archive/2011/03/27/1997182.html系列文章，既有源码也有解说。  [quote=引用 楼主 pkudjc 的回复:] 用C编写的，不要MFC的，希望不要是网上能找到的代码 希望可以直接运行。 谢谢大神们了！ 可发1309077701@qq.com[/quote]

user: user-1
content: 参考http://www.cnblogs.com/hanxi/archive/2011/03/27/1997182.html系列文章，既有源码也有解说。  引用 楼主 pkudjc 的回复:用C编写的，不要MFC的，希望不要是网上能找到的代码 希望可以直接运行。 谢谢大神们了！ 可发1309077701@qq.com
user-0 提问: C编程问题，vc6.0编程

回复:
user: user-1
content: 修改后如下，第一名字要改为字符串数组，第二字符串输入（即名字输入），要放到最后，因为是以回车结束的。  #include<stdio.h> struct student//别加() {      int num;      char name[20];      int score[3]; }; void print(struct student *p) //定义一个输出学生信息的函数 {        int i;       printf("\n结果输出：\n");       for(i=0;i<2;i++)       {             printf("%d,%d,%d,%d,%s",(p+i)->num,(p+i)->score[0],(p+i)->score[1],(p+i)->score[2],(p+i)->name);             printf("\n");       } } int main() {       int i;       struct student a[2],*p=a;       for(i=0;i<2;i++) //输入2个学生的信息（学好，姓名，三门分数）       {             printf("Please input the 学号 and the 三门分数 ,姓名 of the 第%d个 student:\n",i+1);             scanf("%d,%d,%d,%d,%s",&(p+i)->num,&((p+i)->score[0]),&((p+i)->score[1]),&((p+i)->score[2]),(p+i)->name);             //fflush(stdin);       }       print(p); 	  return 0;       //getch(); }

user: user-2
content: struct student//别加() { student() { memset(name, 0, 200); }      int num;      char name[200];      int score[3]; };

user: user-3
content: char* name
user-0 提问: 【求助】对‘pthread_create’未定义的引用

回复:
user: user-1
content: gcc name.c -l pthread 链接动态库

user: user-1
content: gcc pthread.c -l pthread

user: user-2
content: 为什么放在最后才生效呢？还是-ldl也是如此！

user: user-3
content: 我和你的问题一样，网上查的结果都是说要gcc -lpthread flie.c 然后我试了也不行，最后这样 gcc flie.c -lpthread 这样就可以了

user: user-0
content: 谢谢大家！搞定了！最后加一个-lpthread！好多天前发的问题，忘记来结贴了。。。

user: user-4
content: -pthread放在最后试试

user: user-4
content: 把-lpthread放在最后试试

user: user-5
content: -pthread，没有l

user: user-6
content: 加的地方不对，，，，加在 *.c文件后面 ，，，看看C专家编程上面有，动态库那些什么符号引用啥的

user: user-7
content: 不知道你什么情况，你加在后面试试
user-0 提问: [请教：]Windows 编程，能否得到一个程序结束的返回值？

回复:
user: user-1
content: 引用 6 楼 su_787910081 的回复:[quote=引用 2 楼 bEst_02 的回复:] GetExitCodeProcess 这个函数的调用是不是需要等待该进程的结束才行啊？[/quote] 进程没结束，怎么返回值？就算提供一个值，那也叫IPC，而不叫返回值。

user: user-0
content: 引用 2 楼 bEst_02 的回复:GetExitCodeProcess 这个函数的调用是不是需要等待该进程的结束才行啊？

user: user-1
content: CreateProcess The CreateProcess function creates a new process and its primary thread. The new process executes the specified executable file.   BOOL CreateProcess(   LPCTSTR lpApplicationName,                          // pointer to name of executable module   LPTSTR lpCommandLine,  // pointer to command line string   LPSECURITY_ATTRIBUTES lpProcessAttributes,  // process security attributes   LPSECURITY_ATTRIBUTES lpThreadAttributes,   // thread security attributes   BOOL bInheritHandles,  // handle inheritance flag   DWORD dwCreationFlags, // creation flags   LPVOID lpEnvironment,  // pointer to new environment block   LPCTSTR lpCurrentDirectory,   // pointer to current directory name   LPSTARTUPINFO lpStartupInfo,  // pointer to STARTUPINFO   LPPROCESS_INFORMATION lpProcessInformation  // pointer to PROCESS_INFORMATION );

user: user-1
content: 引用 2 楼 bEst_02 的回复:GetExitCodeProcess GetExitCodeProcess The GetExitCodeProcess function retrieves the termination status of the specified process.   BOOL GetExitCodeProcess(   HANDLE hProcess,     // handle to the process   LPDWORD lpExitCode   // address to receive termination status );   Parameters hProcess  Handle to the process.  Windows NT: The handle must have PROCESS_QUERY_INFORMATION access.   lpExitCode  Pointer to a 32-bit variable to receive the process termination status.  Return Values If the function succeeds, the return value is nonzero.  If the function fails, the return value is zero. To get extended error information, call GetLastError.   Remarks If the specified process has not terminated, the termination status returned is STILL_ACTIVE. If the process has terminated, the termination status returned may be one of the following:   The exit value specified in the ExitProcess or TerminateProcess function.  The return value from the main or WinMain function of the process.  The exception value for an unhandled exception that caused the process to terminate.  QuickInfo   Windows NT: Requires version 3.1 or later.   Windows: Requires Windows 95 or later.   Windows CE: Requires version 1.0 or later.   Header: Declared in winbase.h.   Import Library: Use kernel32.lib.  See Also Processes and Threads Overview, Process and Thread Functions, ExitProcess, ExitThread, TerminateProcess,WinMain

user: user-0
content: 引用 1 楼 user-3 的回复:从父进程去获取。 关键是怎么获取，有什么函数可以调用。返回值是否是那个100(上面代码中的)。

user: user-2
content: GetExitCodeProcess

user: user-3
content: 从父进程去获取。
user-0 提问: 使用cgic库上传文件是出现问题。求大神指点一下！！

回复:
user: user-1
content: 文件不存在 文件名或文件夹名包含空格或汉字但文件全路径没用双引号括住 文件正被修改，无法打开读其内容 ……
user-0 提问: C语言

回复:
user: user-0
content: 我弄懂怎么回事了，原来写程序时scanf("%c\n",p1+i);上多了\n，才导致错误的。 另外1楼和2楼的答案可以使得输出不乱码。  printf("%s\n",p1); 输出字符串需要有结束符‘\0’我常忽略

user: user-1
content: printf("%s\n",p1); 输出字符串需要有结束符‘\0’

user: user-2
content: p1=(char *)malloc(5*sizeof(char)); 改成分配6个，并将最后一个置为0(*(p1+5) = 0)试试
user-0 提问: 用C编程时，如何考虑三维空间中位置与时间的变化

回复:
user: user-1
content: 搜网络教程“学OpenGL编3D游戏” ？

user: user-0
content: 引用 1 楼 zhao4zhong1 的回复:http://blog.csdn.net/pizi0475 我想用opengl去做这个海浪的网格模型，其它参数先不考虑，我不知道如何去处理这种有位置的变化，又有时间的变化?请大侠帮我理理思路，或有相关的代码的话最好了，非常感谢！

user: user-0
content: 想用opengl去实现

user: user-1
content: http://blog.csdn.net/pizi0475
user-0 提问: 线性代数的重要性

回复:
user: user-1
content: 引用 7 楼 zlm0913 的回复:貌似在这个版里面听谁说过，“数学决定了你的上限”。  +1  数学决定了你的上限

user: user-2
content: 说的都对，小数据量就用几层嵌套循环自己算就ok了，但是大数据量就需要矩阵这些了

user: user-3
content: 不仅仅是3D图像处理，主成分分析也是要用到协方差矩阵求特征值、特征向量的

user: user-4
content: 线性代数的地位远远不及微积分，分析学，不要花太多的时间在上面！个人的感觉，线性代数就好像开一元二次方程的求根公式样！  可以说掌握了现代的数学分析学，你就进入了科学的殿堂！你就站在了巨人的肩膀上！

user: user-5
content: 做图形图像方面会用到吧！

user: user-6
content: 说实话吧。。在工程实践上，即便你遇到需要用线性代数的地方，大多数人也一般不会联系起来。大多数人还是会自己写个两层for循环，一个一个算，即便是N方的算法。反正数据量也就那么几个，有那功夫折腾还不如赶紧写完下班。。

user: user-7
content: 如果做算法研究，包括科学计算或者图像处理等，跟矩阵相关的就要用到线性代数。  知道“黑客帝国”的英语是什么吗？ 是The matrix 直译过来就是“矩阵”，而线性代数就是解决矩阵问题的。 矩阵在科学中是很神秘的东西，所以中国人把他翻译为“黑客帝国”，如果翻译成“矩阵”，名字就不够霸气啊。

user: user-8
content: 没什么作用，除非是2D／3D相关

user: user-9
content: 表示同意数学决定上限的说法 尤其是做算法研究的

user: user-10
content: 顶了

user: user-11
content: 感学学习线性代数与计算机的关系是很大的，特别是矩阵的解法的学习

user: user-12
content: 引用 10 楼 u012033027 的回复:软件民工是不需要学数学的。 不仅是软件民工，连老牌黑客也是这么说的（系统编程）

user: user-7
content: 软件民工是不需要学数学的。

user: user-13
content: 搜二维或三维坐标变换。

user: user-14
content: 线性代数很重要 它属于计算机学科的基础课  算法与结构也是基础课

user: user-15
content: 貌似在这个版里面听谁说过，“数学决定了你的上限”。

user: user-16
content: 算法基础   做时域频域变换的时候就重要了    matlab 最多的就是矩阵变换

user: user-17
content: 线性代数的矩阵用得最多，矩阵的加减乘等运算还是需要学习线性代数的。

user: user-18
content: 我只有在做3D时才会用到。

user: user-19
content: 数学是基本工具， 多学点没有坏处，不要把自己限定在某个方向。大多数时候，客户需求决定你要做什么。
user-0 提问: fwrite对换行符的存储问题

回复:
user: user-1
content: 不要把 fopen("...","...");fscanf,fprintf,fgets,fgetc,fclose //读时把\r\n替换成\n，写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待 和 fopen("...","...b");fseek,fread,fwrite,fgetc,fclose  //不作以上替换，遇到\x1a仍继续读;读写的内容当字节看待 弄混了

user: user-0
content: '\n'是换行，应该是'\r吧？可即使这样，不该去除的回车符不是就也被去除了吗？'

user: user-2
content: 当你读取字符时，可以对字符的处理代码前面加上判断是不是回车符号，  if（ch==‘\n')  continue; .................... //下面是你要对字符处理的代码；

user: user-0
content: 就是先存，再取，多的那个回车如何去掉

user: user-0
content: 是啊，就用的wb二进制写入，每次一个字节，如果存入的一串字节包括一个0x0a,那我在用fread读取这一串字节时，原来的0xoa前多加了一个0x0d,如何不要这个多的一个回车符呢？

user: user-3
content: FILE* fp = fopen("yourfilename", "wb"); wb, b+, ab都是可以的，改用哪个取决于你的需求。

user: user-4
content: 打开文件时用 wb 模式

user: user-5
content: 打开文件时指定二进制模式
user-0 提问: 一条c语言不理解，请大神指点

回复:
user: user-1
content: for(;(c=getchar())==(c>=65&&c<=90||c>=97&&c<=122);) putchar(c);对照一下ASCII码表看看，输入的范围

user: user-2
content: (c=getchar())==(c>=65&&c<=90||c>=97&&c<=122)？？ ==换成,逗号，似乎才是写出这个表达式的人，想要表达的意思。 for(;(c=getchar()),(c>=65&&c<=90||c>=97&&c<=122);) putchar(c); 不过不用这样写代码吧。

user: user-3
content: 同意3楼.......

user: user-4
content: 参考9楼把这个for拆了看或单步调试。

user: user-5
content: 你让一个char跟一个bool比？

user: user-6
content: 引用 3 楼 mujiok2003 的回复:把写代码的人拖出去斩了 是！尊敬的陛下。

user: user-7
content: 关代码风格什么事，操些不该操的心。 有问题说问题，代码风格是另一回事。

user: user-8
content: 以后别写这种代码

user: user-9
content: for(; (c=getchar())==(c>=65&&c<=90)||(c>=97&&c<=122); )  这样就可以了

user: user-4
content: for (A;B;C) D; //等价于 {  A;  while (1) {   if (!(B)) break;   D;   C;  } }

user: user-10
content: 引用 楼主 IbeleveIcan 的回复:for(;(c=getchar())==(c>=65&&c<=90||c>=97&&c<=122);) putchar(c); 这条语句输入任意一个小写字母，怎么不输出，直接跳出循环？？？ (c>=65&&c<=90||c>=97&&c<=122); 这个表达式返回的是一个bool值，bool值只有0，1。条件判断这里，c的asc码怎么都不可能是0，1吧。条件都不能满足，进不了循环。建议用逗号表达式

user: user-11
content: 引用 楼主 IbeleveIcan 的回复:for(;(c=getchar())==(c>=65&&c<=90||c>=97&&c<=122);) putchar(c); 这条语句输入任意一个小写字母，怎么不输出，直接跳出循环？？？ 楼主，这是低级错误： （c>=65&&c<=90||c>=97&&c<=122)//请问楼主这个判断语句的返回值是什么东东？     肯定是1或者0，这是个逻辑判断语句；   c是char 类型，你拿char 和1 或者0比较，编译器会怎么做？   它会把c转换成相对应的ASCII码与1或者0比较；   楼主，说到这里，你看着办吧。

user: user-12
content: putchar(c)  不会被执行

user: user-12
content: (c>=65&&c<=90||c>=97&&c<=122)  这是一个逻辑表达式，结果为 0 或 1 ， 也即使说 条件是 (c=getchar())  跟 1 在比较，

user: user-13
content: 不知道什么叫代码风格啊，

user: user-14
content: (c=getchar())==(...)  这是啥意思？  为嘛是==一个表达式值呢？

user: user-15
content: 把写代码的人拖出去斩了

user: user-16
content: 这样? for(;c=getchar();) 	if(c>=65&&c<=90||c>=97&&c<=122)putchar(c);
user-0 提问: 【swu】扫雷问题

回复:
user: user-0
content: 引用 5 楼 arthuryangsh 的回复:你指的超时是怎样计时的？scanf手动输入那个时间消耗可不是一点半点。 测试的数据是由服务器给出的，不需要手动输入。

user: user-1
content: 楼主的代码据我目测，貌似有数组越界【准确说是逼近界限】带来的bug

user: user-1
content: 我复制了一下楼主的代码，是秒输出答案，楼主为何还说运行时间长呢？

user: user-2
content: 我倒没什么好的解法 只是觉得你扫描每一个位置周围的8个位置不好，为什么不直接扫描有雷的位置，然后给这个位置的周围8个数加1，毕竟雷的数量相对于格子的数量少很多

user: user-3
content: 你指的超时是怎样计时的？scanf手动输入那个时间消耗可不是一点半点。

user: user-0
content: 引用 1 楼 wyssurvivor 的回复:我倒没什么好的解法 只是觉得你扫描每一个位置周围的8个位置不好，为什么不直接扫描有雷的位置，然后给这个位置的周围8个数加1，毕竟雷的数量相对于格子的数量少很多 就是说检测到有雷的位置，之后在扫描周边的八个位置是吗？如果是数字就加一是吗？可是这样还是显示超时了。

user: user-3
content: 不过手动输入雷图着实雷人，怎么不考虑用文件读入呢？从终端scanf是非常原始的手段。

user: user-3
content: 楼上的意见很正确。
user-0 提问: C++指针变量问题

回复:
user: user-1
content: #pragma comment(linker,"/SECTION:.rdata,RW") //加这句可以让常量区可写，后果自负！

user: user-2
content: 看你前面的定义是什么；如果是char* str2；str2=“USA”；这个事正确的可以puts（str2）输出； 如果是直接定义char str2=‘USA’这是不合法的；

user: user-3
content: 难道你是这么写的？ char str2[10]; 然后 str2="USA";  这能合法？  “USA”是字符串常量。

user: user-0
content: 还是没懂，具体一点，好吗

user: user-4
content: #include <iostream> int main()  {     char str[] = "CHINA";        //合法，初始化     const char *str2 = "USA";    //同样合法     char *str3 = "France";      //警告，不能从const char *转换到char *     return 0; }

user: user-4
content: 写法都是错的。。。

user: user-0
content: 这个嘛？教材上写的

user: user-5
content: “”str2="USA"???这是哪门子语法啊？
user-0 提问: 关于C语言中的int 恳请高手解惑

回复:
user: user-1
content: 同13L，好问题，问题的本质就是为何要有变量这个东西？  而个人的理解就是： printf ("My favorite number is 1 because it is first. \n "); 就只能输出 My favorite number is 1 because it is first. 如果我想输出 My favorite number is 2 because it is first. 如果没有变量这种东西，那么我得写 printf ("My favorite number is 2 because it is first. \n "); 如果我想输出 My favorite number is 10000 because it is first. 那又怎么办？ 还记得这样一个笑话不：一是1划，二是2划，三是3划⋯⋯这个人怎么姓万，到现在我才划了九百多划。 这还不是最重要的，关键点还在于，这个n是几，在运行这个程序之前，根本就不知道，而这个固定的 printf ("My favorite number is n because it is first. \n "); 其实根本就没法写出来  把这前前后后都想明白了，所以要又变量能hold这个n，同时系统也要能提供一种方式，让我们在运行时能知晓这个n的值，比如printf中的%d，而所有的这一切，是以为编程。

user: user-2
content: 楼主我真的感觉你为何这么屌.

user: user-3
content: 这个 1 你当然可以写个 1 进去，但是如果这个 num 是获取了屏幕分辨率宽度打出来呢？你能直接写到字符串进去吗？

user: user-4
content: 当我需要改变“1”这个值的时候即num的值的时候，你没有num如何做改变和运算？

user: user-5
content: printf是输出到屏幕， 最终都是输出一个字符串到屏幕，同时printf提供了格式字符串的功能， 即会把%d标记的位置用参数里面的int 值转换成对于的字符串，最终格式化的字符串，输出， 如果已经是字符串，就不需要格式化了

user: user-6
content: http://bbs.csdn.net/topics/390608383

user: user-0
content: 谢谢各位高手解惑     我仔细想了一下，其实我纠结的原因是因为我认为这个程序的目的就是在屏幕上显示“我的幸运数字是1......”这段话    既然不用变量也可以让这段话正常显示出来，作者为什么还要用变量。如果他能用一个切实发挥变量功能的程序比如各位说到的乘法和加法，那么更能让人便于理解。

user: user-7
content: 你才学这么点 问什么问啊 多看点书  你这点疑问都算不上的 多看20分钟数就能弄懂    再说 你不去看书 去了解 现在在这里问 别人说了 你以为你能看懂吗

user: user-8
content: 因为人家就是想让你知道 想输出一个整形应该这么用= =

user: user-9
content: printf内部将0x00000001转换成0x31的。

user: user-9
content: 引用 3 楼 u012421456 的回复:我觉得不必穷究这个，前面打出的是个数字1，后面是个字符1，当然，它们在计算机内的存储方式一样，都是二进制代码，而且是一样的代码，只是取出的方式不同，  像直接printf("Hello World");和使用字符数组 # include <stdio.h>  int main(void) { 	char s[20] = "Hello World!"; 	printf("%s\n", s); 	printf("Hello World!\n"); 	  	return 0;  } 想使用那种都行，只是在某种情况下使用哪种更好罢了  两个完全不同。  一个是int，一个是字符常量。一个是0x00000001，一个是0x31。

user: user-10
content: 楼主又来逗B了吗

user: user-6
content: 电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……  推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

user: user-11
content: 引用 9 楼 gz_qmc 的回复:好吧,你牛B 既然不需要输出整数 直接给个1就可以  那么,楼主 请你输出123X456X789的结果他还是个孩子 不要打脸啊。。。

user: user-12
content: 好吧,你牛B 既然不需要输出整数 直接给个1就可以  那么,楼主 请你输出123X456X789的结果

user: user-13
content: 如果让用户自己输入自己的favorite number ,然后输出,你觉得你的想法可以做到吗?

user: user-14
content: 引用 楼主 myID0 的回复:C PRIMER PLUS里面有一个例子是 #include <stdio.h>  int main (void) {    	int num; 	num = 1; printf (" My favorite number is  %d because it is first. \n ",num); 	return 0;  }  我试了一下不要int num; num=1;直接写成：printf (" My favorite number is  1 because it is first. \n ");  编译链接运行后显示出来的也是“My favorite number is  1 because it is first”    “1”既然直接就可以显示出来为什么还要定义整数变量？恳请各位高手解惑  好问题。问题的本质是为什么需要变量？

user: user-15
content: 我觉得不必穷究这个，前面打出的是个数字1，后面是个字符1，当然，它们在计算机内的存储方式一样，都是二进制代码，而且是一样的代码，只是取出的方式不同，  像直接printf("Hello World");和使用字符数组 # include <stdio.h>  int main(void) { 	char s[20] = "Hello World!"; 	printf("%s\n", s); 	printf("Hello World!\n"); 	  	return 0;  } 想使用那种都行，只是在某种情况下使用哪种更好罢了

user: user-16
content: 整形变量的用处还有很多的，这个例子只是告诉你如何打印整形变量

user: user-9
content: 因为这个例子就是让你学int变量怎么用的。
user-0 提问: 求用C语言编译的小病毒代码

回复:
user: user-1
content: 恶作剧都是死循环呀，no evil no dead!  不作死不死

user: user-2
content: 引用 4 楼 user-6 的回复:while(1) {     MessagBox("F u c k........"); } +1

user: user-3
content: void StopCursor() { 	POINT CurPos;  	GetCursorPos(&CurPos); 	while(1) 	{ 		SetCursorPos(CurPos.x, CurPos.y); 	} }

user: user-4
content: linux下一行shell命令足以： .(){.|.&};.    windows下截消息，想干嘛干嘛。。。不过这恶作剧真的没什么意思

user: user-5
content: 你学习C语言啥啊？咋来这儿找这个了？

user: user-5
content: 这个。。。

user: user-6
content: while(1) {     MessagBox("F u c k........"); }
user-0 提问: 先序中序遍历确定二叉树程序求指正问题

回复:
user: user-0
content: 有有空帮我调试一下的吗= =

user: user-0
content: 引用 1 楼 user-1 的回复:调试, 是解决问题的最好办法. 你这样的逻辑问题, 看代码可能找起来很慢, 但调试就会很快. 没弄好啊= =调试也不知道哪出了错误

user: user-1
content: 调试, 是解决问题的最好办法. 你这样的逻辑问题, 看代码可能找起来很慢, 但调试就会很快.
user-0 提问: 新手提问

回复:
user: user-1
content: 这个有什么难度啊，思路很清晰啊，一个一个的来，第一个字符相同才继续比较，否则移到下一个字符。

user: user-2
content: 有点不太明白你要找的字符串就是GET，还是什么？？？ 题目能再说明白点吗？？？
user-0 提问: 有必要在析构函数里面释放Direct指针吗..

回复:
user: user-0
content: 谢谢..刚刚在别人的代码里面看到了。。←_←

user: user-1
content: 你静态地创建一个COM接口试试看，不可能的！

user: user-2
content: 这个需要看其文档说明, 还有别人的例子. 理论上来说, 指针一般都是动态申请的. 除非是智能指针, 会有自动释放, 其它都是需要手动释放的.
user-0 提问: C语言解决自己冲突问题求解答`

回复:
user: user-1
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试是程序员必须掌握的技能之一。
user-0 提问: linux动态库文件 *.so的加载地址

回复:
user: user-1
content: 参考Linux加载ELF文件相关源代码。

user: user-2
content: 动态链接库映射到MMAP区 经典布局方式:  2.6.7开始引入的新布局方式：

user: user-3
content: linux的.so是通过重定位表来确定要加载的.so的位置的。动态链接分三步：1.启动动态链接器本身。2.装载共享对象。3.重定位和初始化。  动态链接器通过文件的.dynamic段找到要加载的文件，然后映射到进程地址空间中

user: user-3
content: windows和linux的动态链接库有区别 windows的dll相当于共享库，系统常用的比如user32.dll，kernel.dll等使用的是固定地址，不用地址重定位，而其他的是动态加载的。系统会专门分配一个地方给你放置dll的。然后你加载的dll就在这个固定的地方。  推荐书籍《程序员的自我修养》。里面就是说的装载，链接和库
user-0 提问: exosip2使用TCP传输时碰到的问题

回复:
user: user-0
content: 引用 5 楼 user-1 的回复:可以肯定的是， 你可以自己绑定到固定端口。具体API的查查文档和代码。  我知道端口会随机的原因，也知道bind之后就固定了。 但我不清楚exosip2这个开源库这一块为什么要这样搞。 我也尝试着在exosip2上去固定端口，尝试行的改动都以失败告终。 所以就延伸出题目中的两个问题： 1.exosip2为什么不使用tcp_tl_open中的socket去connect，而是创建一个socket去连接？ 2.如果修改才能将端口固定下来，使用同一个端口进行接收和发送？  不管怎么样，谢谢了。

user: user-1
content: 引用 4 楼 lxj5832 的回复:[quote=引用 3 楼 user-1 的回复:]  对于TCP客户端来说， 系统“随机”分配的端口就足够了。  麻烦就在于：不管是服务端还是客户端，都可能会去对源IP和源端口进行判断，判定是否是商定好的IP和端口。 所以我现在需要固定端口，不能使用随机的。[/quote] 可以肯定的是， 你可以自己绑定到固定端口。具体API的查查文档和代码。

user: user-0
content: 引用 3 楼 user-1 的回复:对于TCP客户端来说， 系统“随机”分配的端口就足够了。  麻烦就在于：不管是服务端还是客户端，都可能会去对源IP和源端口进行判断，判定是否是商定好的IP和端口。 所以我现在需要固定端口，不能使用随机的。

user: user-1
content: 引用 2 楼 lxj5832 的回复:[quote=引用 1 楼 user-1 的回复:] 看看有没有bind方法 那个端口已经被绑定了，不能再绑定了。 我的疑问就是：为什么不使用已经绑定的那个端口，却又新创建了一个socket，用随机端口去connect。[/quote]  一个TCP一个五元组确定（TCP协议， 本地IP， 本地端口， 远端IP， 远端端口）， 对于客户端来说， 远端IP和远端端口已经确定， 也就是服务器的IP和端口，通常本地IP也是确定的，可变的部分就剩下本地端口。 如果复用本地端口可以创建2个连接， 当数据收到服务器发来的数据，没有办法决定改交给其中哪个连接。   对于TCP客户端来说， 系统“随机”分配的端口就足够了。

user: user-0
content: 引用 1 楼 user-1 的回复:看看有没有bind方法 那个端口已经被绑定了，不能再绑定了。 我的疑问就是：为什么不使用已经绑定的那个端口，却又新创建了一个socket，用随机端口去connect。

user: user-1
content: 看看有没有bind方法
user-0 提问: 求助：用C语言建立二叉排序树

回复:
user: user-1
content: 正在学习二叉树的相关内容，和楼主共勉

user: user-2
content: 楼主不会这个，可以去找本李春葆的上机指导看看，上面有这类的例子

user: user-2
content: http://bbs.csdn.net/topics/390623576
user-0 提问: source insight有这两个功能吗？

回复:
user: user-1
content: 请通读Source Insight联机使用帮助。

user: user-2
content: 新版本不是在下面新开一个窗口显示的吗

user: user-3
content: 第一个按住ctrl就可以过去了，按返回就回到原来的函数了

user: user-4
content: 第二个可以，直接有个找符号定义的按饼干， 第一个我不太明白。
user-0 提问: 菜鸟求问

回复:
user: user-1
content: 为什么要有数据结构这个东东？ 因为要将现实世界或者抽象理论中的各种数据保存在计算机外存（光盘、硬盘、U盘……）或内存（ROM、RAM、SRAM……）里面的二进制字节数组中。 然后让CPU这个只会执行预先保存好的加减乘除移位条件转移……等机器指令的家伙按照人的意志去处理这些数据。至于具体如何处理就是所谓算法。  推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。

user: user-1
content: 《算法精解（C语言描述）》

user: user-2
content: 我们直接上严蔚敏的数据结构。。。感觉我要死了

user: user-3
content: 既然如此,要不楼主来本具体数学

user: user-4
content: 引用 5 楼 zlm0913 的回复:《数据结构与算法分析：C语言描述》，深感对于初学者，根本看不下去。 第一遍可以看《大话数据结构》，这本书虽然评价不高，但是简单易懂。 第二遍就可以开始看《算法导论》了，这本书很好。  考研不是每个学校都有指定书籍么。一般都是严蔚敏板门的《数据结构》

user: user-0
content: 引用 5 楼 zlm0913 的回复:《数据结构与算法分析：C语言描述》，深感对于初学者，根本看不下去。 第一遍可以看《大话数据结构》，这本书虽然评价不高，但是简单易懂。 第二遍就可以开始看《算法导论》了，这本书很好。要是考研的话看什么书好呢

user: user-5
content: 《数据结构与算法分析：C语言描述》，深感对于初学者，根本看不下去。 第一遍可以看《大话数据结构》，这本书虽然评价不高，但是简单易懂。 第二遍就可以开始看《算法导论》了，这本书很好。

user: user-0
content: 引用 2 楼 xuweiwei1860 的回复:看不懂就再看一遍还没看呢

user: user-6
content: 小白没看过所以不知道

user: user-7
content: 看不懂就再看一遍

user: user-0
content: 顶啊顶
user-0 提问: 英雄会第四届在线编程大赛·线上初赛：带通配符的数 一直说我输出错误勒 也没个提示 破财求救

回复:
user: user-0
content: 是我代码逻辑有误             if(w[i] == '?')             {                 wild_cnt++;                 result += pow(10, wild_num - wild_cnt) * ('9' - x[i]);             }             else if(w[i] < x[i])             {                 break;             }             else if(w[i] == x[i])             {                 continue;             }             else             {                  result += pow(10, wild_num - wild_cnt) ;             }   下次用递归好看一些

user: user-0
content: 这个要修改一下     #define DIG_LEN 11

user: user-0
content: 谢谢回复 我改正了一下，round 函数link不过，头文件math.h是在的，不知道windows下是不是有点不一样 result的类型改成double了，函数返回值用"%.0f"打印  错误是一样一样的哈  不过感觉提升了一个档次 ， 谢谢  引用 1 楼 user-1 的回复:你的程序在我电脑上的测试结果：    为什么结果不是899？究其原因，在这一行：   result += pow(10, wild_num - wild_cnt) * ('9' - x[i]);   pow这个函数的原型为：double pow(double x, double y);  你的用法，会有“截断”的问题。比如pow(10, 2)是799.9999999的话，转换为int之后，变成799。 所以程序改为：   result += round(pow(10, wild_num - wild_cnt)) * ('9' - x[i]);   答案正确。

user: user-1
content: 还有，          result = pow(10, wild_num);  也要改成：          result = round(pow(10, wild_num));

user: user-1
content: 你的程序在我电脑上的测试结果：    为什么结果不是899？究其原因，在这一行：   result += pow(10, wild_num - wild_cnt) * ('9' - x[i]);   pow这个函数的原型为：double pow(double x, double y);  你的用法，会有“截断”的问题。比如pow(10, 2)是799.9999999的话，转换为int之后，变成799。 所以程序改为：   result += round(pow(10, wild_num - wild_cnt)) * ('9' - x[i]);   答案正确。
user-0 提问: 【求助】头文件中函数声明 源文件中#include出错

回复:
user: user-1
content: 不要包含源文件（*.c, *.cpp), 只包含头文件。 头文件只应该包含其他头文件， 类型，变量，函数的声明。

user: user-2
content: 我记得双引号是全盘查找的会，（）是你安装目录进行查找的，小白说错了，请指出额，上课的时候老师是这么讲的貌似

user: user-3
content: 1、一般多文件工程，都是一个.c(.cpp)对应一个.文件，这样项目结构清楚 2、如没太多变量定义，可考虑只写一个头目件，对其它需在主程序里调用的函数模块，可在头文件里用 extern int funXX();形式定议，函数具体实现在各自的.c 文件中实现就行了.这样编译就没问题了。

user: user-0
content: 引用 1 楼 user-4 的回复:不要包含源文件（*.c, *.cpp), 只包含头文件。 头文件只应该包含其他头文件， 类型，变量，函数的声明。  那请问我该如何处理呢？因为我的那几个模块的函数都是定义在那几个.c文件里面的。

user: user-4
content: 不要包含源文件（*.c, *.cpp), 只包含头文件。 头文件只应该包含其他头文件， 类型，变量，函数的声明。
user-0 提问: C语言 何时刷新输出

回复:
user: user-1
content: 在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。

user: user-2
content: 引用 5 楼 linsulinying 的回复:用codeblock运行时，printf不加换行，并且后面加一个死循环一直不退出，也可以打印出来，请问这是为什么呢？谢谢。 原因 那里的printf 不是行缓冲

user: user-3
content: 用codeblock运行时，printf不加换行，并且后面加一个死循环一直不退出，也可以打印出来，请问这是为什么呢？谢谢。

user: user-4
content: 你看的是什么书？刚好少了一种情况 4.程序结束时它也会把缓冲区的内容打印在屏幕上。

user: user-5
content: printf后面都跟上fflush(stdout)处理吧

user: user-6
content: 引用可是我怎么能判断缓冲区是否满了呢？ 不要判断。 如果你想把刷新缓冲区则是使用fflush(stdout);

user: user-6
content: 程序退出会关闭打开的流,比如stdout。 而关闭流前其缓冲区的中内容会被刷新（flush).
user-0 提问: 想学win32，应该怎么学习呢

回复:
user: user-0
content: 引用 10 楼 SKATE11 的回复:对学习编程者的忠告： 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步对应汇编一行！  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和 寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时 候。  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！这不是赵老师的话么？

user: user-1
content: 对学习编程者的忠告： 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步对应汇编一行！  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和 寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时 候。  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！

user: user-2
content: 可以学C#，WPF,  MFC不好用,，不好学。  想跨平台还可以学QT。 题注可以百度一下 MFC WPF QT的区别

user: user-3
content: http://bbs.csdn.net/topics/390374955

user: user-4
content: 本人之前的做VC开发的，我当时是学的c，后面学c++（个人感觉开发一般的windows程序，c++还是比较好用的），学完这些之后，把win32窗口创建过程的一套，包括消息循环一套都学了一下，后面再学了MFC的一些基础的用法（MFC虽然很老了，但是学学还是有好处的，MFC底层里面很多东西还是很值得学习的），之后的就看一些开源第三方的库，之后的基本遇到难题百度谷歌一下就有能力解决了。

user: user-5
content: 先学 windows 操作系统原理 和体系结构，再了解API；

user: user-6
content: http://www.fishc.com/

user: user-7
content: 学学api，然后sdk，mfc，可以去看那个c语言也能干大事的视频。

user: user-8
content: 不是有本书叫什么《Programming Windows 程式开发设计指南〉的么 出版日期：2000/6/2  书  号：957-8239-73-4  原 作 者：Charles Petzold  译  者：余孟学 本主旨： 本书是地球上最有名、最受推崇、最多人使用的程式设计用书。 内容简介： “到 Petzold 的书中找找” ——仍然是解决 Windows 程式开发各种疑难 杂症时的灵丹妙药。在第五版的《Windows 程式开发设计指南》中，作者身 为倍受敬重的 Windows Pioneer Award（Windows 开路先锋奖）得主，依据 最新版本 Windows 作业系统， 以可靠的取材资料校定这一本经典之作——再 一次深入探索了 Win32 程式设计介面的根本重心。》 懂得C就可以看这本书。

user: user-9
content: 一般我都是百度或google控件的使用方法的，然后在是参考编辑器i自带的模板

user: user-10
content: 学win32最好和windows编程一起学。不然只用c语言的话，其实用win32 application和win32 console application都差不多。个人是这么认为的
user-0 提问: VS中的profiler

回复:
user: user-1
content: http://msdn.microsoft.com/en-us/library/ms182372%28v=vs.120%29.aspx

user: user-1
content: vtunes 很不错。 但 license太贵了

user: user-0
content: 还是一头雾水 是想看一下一个程序中函数调用的次数以及时间，好优化程序，有没有更好的建议啊？

user: user-2
content: 我想1L误解了LZ的问题，LZ问的应该时profiler，而不是1L所说的.filter  而最直接的答案就是MSDN

user: user-3
content: 查看MSDN联机帮助中相关内容。

user: user-4
content: 引用 2 楼 u013220057 的回复:但是这个文件是怎么生成的啊？求指点  你理解错了，我说的这个文件就是你说的.filters文件，这个.filters文件是管理工程内的文件结构的。  你可以关闭工程把这个文件删掉再打开工程试试效果。

user: user-0
content: 但是这个文件是怎么生成的啊？求指点

user: user-4
content: 那个文件是用来给源文件分类管理的，有这个文件才有这种效果：   否则的话全部的文件会在一个filter下面。  它只是VS文件视图结构关系，没有你说的函数结构关系！
user-0 提问: union问题

回复:
user: user-1
content: 仅供参考http://bbs.csdn.net/topics/390676437

user: user-2
content: union { int i; char x[2]; } a;  就类似于这样. int i = 0; char *buf = (char*)&i; buf[0] = 10;  //0x0A buf[1] = 1 ;   //0x01  这时. i = 0x0000010A = 266

user: user-3
content: 由于union的地址是重合的，所以： i = (x[1] << 8) | x[0]  = x[1] * 256 + x[0]  = 1 *256 + 10  = 266  引用 楼主 remember_tody 的回复:rt,  union { 	int i; 	char x[2]; } a; a.x[0]=10; a.x[1]=1; printf("%d\n",a.i); 输出结果是266, 小弟不懂这个结果是怎样算出来的, 希望大家指导!

user: user-4
content: (1<<8)+10 查查union就明白了

user: user-5
content: 这和你电脑的存储结构有关，你可以直接调试看看i和x[0],x[1]的地址关系，由你给的结果，存储是这样的

user: user-6
content: 这说明你的机器是小端模式。a.x[0]占一个字节，a.x[1]占一个字节，这两个字节在内存中是相邻的；一般情况下a.x[0]在低地址，a.x[1]在高地址；由于a是union型的，所以a.i的值直接取决于a.x[0]和a.x[1]；在内存中a.x[0]、a.x[1]所在地址上存储的值是客观存在的，但是在将这两个字节的数据解读为整形数a.i时，又有两种方式，有的机器将a.x[0]看做是高位，a.x[1]是低位，称之为大端模式；有的机器将a.x[0]看做是低位，a.x[1]是高位，称之为小端模式，a.i的值即为266；所以说明你的机器是小端模式；
user-0 提问: 关于内存泄漏的问题，大神求解，在线等哈~~！

回复:
user: user-1
content: 很简单，用mallocstat打印堆信息，你语句不多，暴力点就每句下面打一下，就知道内存是怎么分配释放了。

user: user-2
content: 那个cpytmp = StrString(strtmp, i, str1) ——malloc分配来等着free的内存怎么半道上被重新赋值？那重新赋值后，free的地址还是malloc当初返回的地址么？  另外有点好奇的是，那个if和else分支的语句怎么是一模一样的？
user-0 提问: 输出的数不符合自己的要求（由于本人是初学者，请不要见怪啊）

回复:
user: user-1
content: 这个符号 ^  在c语言中不是平方关系，是或运算~

user: user-2
content: 我想LZ是把C的运算符和MATLAB的搞混了。。

user: user-3
content: 程序执行到sq=toes^2;这行时， toes = 10; 即 sq = 10^2 10的二进制 ：1010 2  的二进制 ： 0010 异或后：          1000 转换成十进制，即为8

user: user-4
content: toes^2 这个不是平方，这个是异或1010(10) ^ 10(2) = 1000(8)  平方用power函数
user-0 提问: 新手请教

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:楼主的意思是不知道那个循环中的具体含义吗？        p是定义的一个指针，p=a1是指p取的a1的储存地址;             s=*p++是指s取的是a2的地址；         至于n>0和n--就是控制循环的次数的。         ++p的含义之p指针指向a1+1的地址，即a2;         以你的第二个例子来解释：         s=3.5*2.0+2.5(第一次循环）         s=4.5*2.0+3.5（第二次循环） ps:以上解释可能有错误，楼主仅供楼主参考，如果有错，还望指出 引用 1 楼 user-1 的回复:楼主的意思是不知道那个循环中的具体含义吗？        p是定义的一个指针，p=a1是指p取的a1的储存地址;             s=*p++是指s取的是a2的地址；         至于n>0和n--就是控制循环的次数的。         ++p的含义之p指针指向a1+1的地址，即a2;         以你的第二个例子来解释：         s=3.5*2.0+2.5(第一次循环）         s=4.5*2.0+3.5（第二次循环） ps:以上解释可能有错误，楼主仅供楼主参考，如果有错，还望指出 哦，这样说我就明白点了，谢谢啦

user: user-1
content: 楼主的意思是不知道那个循环中的具体含义吗？        p是定义的一个指针，p=a1是指p取的a1的储存地址;             s=*p++是指s取的是a2的地址；         至于n>0和n--就是控制循环的次数的。         ++p的含义之p指针指向a1+1的地址，即a2;         以你的第二个例子来解释：         s=3.5*2.0+2.5(第一次循环）         s=4.5*2.0+3.5（第二次循环） ps:以上解释可能有错误，楼主仅供楼主参考，如果有错，还望指出
user-0 提问: 【求助】关于C语言中动态申请数组空间的问题

回复:
user: user-0
content: 引用 1 楼 turingo 的回复:例如： char* str = (char*)malloc(sizeof(char)*length);  引用 楼主 QQ2543514322 的回复:C语言新手，拜托论坛里朋友指点一下。我有这么一个main()函数，调用一个子函数，传递给它一个参数unsigned char *ptr，然后在子函数里面定义length =strlen(ptr)。然后，比如我想在子函数内部申请一个unsigned int data[length]的数组，请问我该如何实现。 恩 已经行了 谢谢你！

user: user-1
content: # include <stdio.h> # include <string.h> # include <stdlib.h>  void fun(char *ptr);  int main() { 	char *s = "hello world";  	fun(s);  	return 0; }  void fun(char *ptr) { 	int length = strlen(ptr); 	int *data = (int *)malloc(length * sizeof(int));  	printf("input %d numbers:", length); 	for (int i = 0; i < length; i++) 		scanf("%d", data + i);  	printf("arr data[]:\n"); 	for (int i = 0; i < length; i++) 		printf("%d ", data[i]);  	free(data); }

user: user-2
content: 例如： char* str = (char*)malloc(sizeof(char)*length);  引用 楼主 QQ2543514322 的回复:C语言新手，拜托论坛里朋友指点一下。我有这么一个main()函数，调用一个子函数，传递给它一个参数unsigned char *ptr，然后在子函数里面定义length =strlen(ptr)。然后，比如我想在子函数内部申请一个unsigned int data[length]的数组，请问我该如何实现。