Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 我把一个 EXE 工程改成lib属性，竟然编译通过了，求lib库也可以有main函数吗？main函数能导出吗？如果想导出main函数该怎么办？能改名吗？

回复:
user: user-1
content: 其实EXE程序，也可以当库用。我个人的感觉是，EXE和DLL什么的，主要差别就是加载点不太一样。

user: user-2
content: main函数入口的名称是可以改的。
user-0 提问: 实现两个字节的十六进制数高低位互换再换算成整型数输出

回复:
user: user-1
content: 大端机器和小端机器，以及数据内存布局  --------------------------- |  x1  |  x2  |  x3  |  x4  | --------------------------- int tmp占4个字节（32位），在内存中的地址也是依次增长。开始的时候x1到x4都是0，memcpy后x1存放的是0x05, x2存放的是ox01， 现在tmp在小端机器上的十六进制是0x00000105，但是在大端机器是0x05010000。所以在大端机器上的字节这种方法是行不通的。

user: user-2
content: 未必能，考虑字节序。

user: user-0
content: 多谢了，学习了！
user-0 提问: Unicode既是字符集又是一种字符编码？

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

user: user-1
content: 先 http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express 点开Visual C++ 2010 Express下面的语言选‘简体中文’，再点立即安装  再参考 C:\Program Files\Microsoft Visual Studio 10.0\VC\crt\src\cvt\*.*

user: user-2
content: 想搞清楚这些,下载一个notepad++,把一段文字用notepad++保存成txt文件,它有转换成不同编码的选项,可以随便改几种看一看.然后用二进制文本查看器,或者用C++代码,把保存的txt文件读出来,一个字节一个字节的看一看.还有,用word,打几个字,用alt+x的功能查到它的Unicode编码.结合起来,你就知道了.

user: user-3
content: 引用 1 楼 supermegaboy 的回复:严格来讲，unicode是字符编码，但unicode的发行版本又包含了字符集，所以嘛，呵呵，如果从宽泛一点的看法出发，把unicode称为既包含字符编码也包含字符集也未尝不可。  ucs是ISO搞的一套，后来从unicode2.0开始与unicode一致了。  那些gb开头的东西虽然也规定了字符编码，但应该主要属于字符集。 学习了，我以为他就是一种占2字节的编码而已

user: user-4
content: 严格来讲，unicode是字符编码，但unicode的发行版本又包含了字符集，所以嘛，呵呵，如果从宽泛一点的看法出发，把unicode称为既包含字符编码也包含字符集也未尝不可。  ucs是ISO搞的一套，后来从unicode2.0开始与unicode一致了。  那些gb开头的东西虽然也规定了字符编码，但应该主要属于字符集。
user-0 提问: 咨询一个VS2013的编译错误

回复:
user: user-1
content: 将错误信息中出现的标识符放在google里面搜一下，看其在哪个.lib中，然后在本地硬盘上搜索该.lib,如果没有，在网上搜索相关库或模块下载安装，然后将其所在目录填写到“附加依赖库所在目录”中，将其名字添加到“附加依赖库”中，重新连接。 VC6： 工程、设置、C/C++、分类：Preprocessor、附加包含路径：填写附加头文件所在目录 逗号间隔多项 工程、设置、Link、分类：Input、附加库路径：填写附加依赖库所在目录 分号间隔多项 工程、设置、Link、分类：Input、对象/库模块：填写附加依赖库的名字.lib 空格间隔多项 VS20xx： 项目、属性、C/C++、附加包含目录：填写附加头文件所在目录 分号间隔多项 项目、属性、链接器、常规、附加库目录：填写附加依赖库所在目录 分号间隔多项 项目、属性、链接器、输入、附加依赖项：填写附加依赖库的名字.lib 空格或分号间隔多项

user: user-2
content: 是不是该库所在的目录不在搜索路径内？

user: user-0
content: 引用 1 楼 akirya 的回复:缺少libGLESv2.lib 这library 已经添加到VS的VC++的lib内，并且在VC 项目中进行引用了！！不知道是不是其他地方没有引用他！！

user: user-3
content: 缺少libGLESv2.lib

user: user-4
content: 是路径不对吧

user: user-5
content: 引用 6 楼 benson_nupt 的回复:[quote=引用 4 楼 user-5 的回复:] [quote=引用 2 楼 benson_nupt 的回复:] [quote=引用 1 楼 akirya 的回复:] 缺少libGLESv2.lib 这library 已经添加到VS的VC++的lib内，并且在VC 项目中进行引用了！！不知道是不是其他地方没有引用他！！[/quote] 缺少libGLESv2.lib[/quote] 已经有了~~[/quote] 缺少libGLESv2.lib------------对于编译器来说。

user: user-0
content: 引用 4 楼 user-5 的回复:[quote=引用 2 楼 benson_nupt 的回复:] [quote=引用 1 楼 akirya 的回复:] 缺少libGLESv2.lib 这library 已经添加到VS的VC++的lib内，并且在VC 项目中进行引用了！！不知道是不是其他地方没有引用他！！[/quote] 缺少libGLESv2.lib[/quote] 已经有了~~

user: user-0
content: 引用 3 楼 xiaoqiao_82 的回复:是不是该库所在的目录不在搜索路径内？ 在哪里设置搜索路径？

user: user-5
content: 引用 2 楼 benson_nupt 的回复:[quote=引用 1 楼 akirya 的回复:] 缺少libGLESv2.lib 这library 已经添加到VS的VC++的lib内，并且在VC 项目中进行引用了！！不知道是不是其他地方没有引用他！！[/quote] 缺少libGLESv2.lib
user-0 提问: 插入排序中memcpy()疑惑

回复:
user: user-0
content: 谢谢，我懂了

user: user-1
content: memcpy(key, &a[j * esize], esize) esize是每个元素的大小，这是不固定的，有可能它是一个结构体 而a是char*，所以要取得下一个元素的地址就需要j*esize

user: user-2
content: memcpy以char为单位，指针参数是void *的，需要转换成具体的字节地址
user-0 提问: 网上找到的一个圆形波程序，请各位帮我看看分析，谢谢！

回复:
user: user-0
content: 引用 1 楼 user-1 的回复:Navier–Stokes方程 Ripple效应 为什么时间要这样写？

user: user-1
content: Navier–Stokes方程 Ripple效应
user-0 提问: 求教有关字符串输入的问题

回复:
user: user-1
content: 一、你输入的字符串最大为“right”,因此a的大小最小为6，有一个'\0'要存 二、scanf("%s",a)；是从第一个非空字符开始，到下一个空字符结束 三、EOF是文件结束的标志，其值为-1，而scanf的返回值表示你输入参数的个数，(在你的程序中只有输入字符串就为1)， crtl+z连续两次只是windows下的模拟EOF,

user: user-2
content: 貌似这个不是程序的问题  貌似就是这样 没想到解决方法  不过可以用  cin>>a  替换  只需要一次就ok

user: user-3
content: 你直接点击空格键试试看

user: user-3
content: 你几点点击空格试试看

user: user-4
content: 你只是你是这样，Windows好像都是这样
user-0 提问: 【求助】error: array type has incomplete element tpe

回复:
user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译，直到定位到具体语法出错的位置。” 的方法解决的。  根据它的error提示，我在我的RFID.h的文件里面找到那一行，如下： extern struct TAG TagGroup[TAG_NUM]; 这是对于TagGroup结构体的声明，其中TAG_NUM已经在之前宏定义过了。 在VC环境下可以，但是在or里面就不行了，我不知道是不是它不支持结构体的缘故？

user: user-1
content: 偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译，直到定位到具体语法出错的位置。” 的方法解决的。

user: user-0
content: 自己给自己顶一下。

user: user-1
content: 引用 4 楼 QQ2543514322 的回复:[quote=引用 3 楼 zhao4zhong1 的回复:] 偶遇到类似问题都是用 “每次用/*...*/注释掉不同部分再重新编译，直到定位到具体语法出错的位置。” 的方法解决的。  根据它的error提示，我在我的RFID.h的文件里面找到那一行，如下： extern struct TAG TagGroup[TAG_NUM]; 这是对于TagGroup结构体的声明，其中TAG_NUM已经在之前宏定义过了。 在VC环境下可以，但是在or里面就不行了，我不知道是不是它不支持结构体的缘故？[/quote] 有时候编译出错提示的位置和实际语法出错的位置差几十个文件和几万行源代码不止。 此时你只有用 “每次用/*...*/注释掉不同部分再重新编译，直到定位到具体语法出错的位置。” 的方法手动定位到真正出错的位置。

user: user-0
content: 它提示错误的地方我定义了一个结构体变量。是不是在这个环境里面不支持结构体？求解答。
user-0 提问: 为啥输出是这样子的啊

回复:
user: user-1
content: 你像这样输入不会报错吗？？？ 显然你第二个输入已经越界了、、、  字符数组，想要当字符串来用，一定要记得结束时一定加‘\0‘,因此长度要比你输入的长度大1 %s输出时直到遇到'\0'才会结束、、、、

user: user-2
content: 你设置个断点，单步运行就可以看出原因了。 F9设置断点，F5调试，F10,单步运行
user-0 提问: [swu]c51  流水灯

回复:
user: user-1
content: #include<reg52.h> void delay(int i); int j; main(void) { 	while(1) 	{ 		P1=0xef; 		delay(200); 		P1=0xbf; 		delay(200); 	} }  void delay(int i) { 	for(i;i>0;i--) 		for(j=100;j>0;j--); } 用一个while（1）来表示大循环，再写一个delay延时函数就可以啦
user-0 提问: 求一个最优的查找算法

回复:
user: user-1
content: 查找算法最低时间复杂度就是O(logn)，再快就只能牺牲存储空间了

user: user-2
content: 在有序的数组查找的话用二分法

user: user-3
content: 二分查找基于一个事实，就是这一次没有找到没有关系，可以把下一次的查找范围缩小一半----即一次查找可以淘汰一半。  用类似的思想，能否淘汰的更多一点？----数学上有一个与0.5（一半）功能类似的常数（0.618....),用好了一次查找可以淘汰一半多（0.618比0.5大），用不好一次查找只能淘汰一小半（（1-0.618）=0.382<0.5） 这个0.618就是大大有名的“黄金分割数”

user: user-4
content: 建立hash表

user: user-5
content: hash在数据较少时可能比折半慢。

user: user-6
content: 如果这组数有范围的话，那么就将这组数放到数组中，对数的查找是O(1)   远远高于二分查找  如果没范围或者范围太大，hash 查找也是O(1)
user-0 提问: [SWU]如何将RGB888转化为RGB565?

回复:
user: user-1
content: unsigned short int RGB888toRGB565(unsigned long int pixel) {     int r = (pixel >> 16) & 0xFF;     int g = (pixel >> 8) & 0xFF;     int b = pixel & 0xFF;      unsigned short B = (b >> 3)                 & 0x001F;     unsigned short G = ((g >> 2) << 5)      & 0x07E0;     unsigned short R = ((red >> 3) << 11) & 0xF800;      return (unsigned short int) (R | G | B); }
user-0 提问: 问下一个打印内存的问题

回复:
user: user-0
content: 引用 楼主 l360220954 的回复://这个是要在下面使用的那个数据类型的定义 typedef unsigned int UINT8; 然后我定义了一个这么大的缓冲区，该缓冲区总共可以接收1024个数据，每个数据的大小可达8个字节 UINT8 buf[1024][8]; 想问下该怎么打印出某一个缓冲区的数据有16进制表示呢？ 比方说，我现在想打印出buf[0]这个数据缓冲区，该怎么去写这个printf语句呢？  这个win32下是可以打印得出来，在linux下要用%llu

user: user-1
content: void HexDump(char *buf,int len,int addr) {     int i,j,k;     char binstr[80];      for (i=0;i<len;i++) {         if (0==(i%16)) {             sprintf(binstr,"%08x -",i+addr);             sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);         } else if (15==(i%16)) {             sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);             sprintf(binstr,"%s  ",binstr);             for (j=i-15;j<=i;j++) {                 sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');             }             printf("%s\n",binstr);         } else {             sprintf(binstr,"%s %02x",binstr,(unsigned char)buf[i]);         }     }     if (0!=(i%16)) {         k=16-(i%16);         for (j=0;j<k;j++) {             sprintf(binstr,"%s   ",binstr);         }         sprintf(binstr,"%s  ",binstr);         k=16-k;         for (j=i-k;j<i;j++) {             sprintf(binstr,"%s%c",binstr,('!'<buf[j]&&buf[j]<='~')?buf[j]:'.');         }         printf("%s\n",binstr);     } }

user: user-2
content: 因为定义成 UINT8 buf[1024][8]; 所以 每个数据的大小可达8个字节。;这个无法解决。 除非额外存储 每个数组几个UINT8。 即再定义一个数组,表示数据长度  int len [1024];  再不然，增加一个数据表示结束数据 定义成 UINT8 buf[1024][ 8 + 1]; 也可以定义为结构数组 struct Data{  int len; UINT8 data[8]; }; struct Data buf[1024];

user: user-3
content: typedef unsigned char UINT8; UINT8 buf[1024][8];  for(int i =0; i < 1024; i++) { 	unsigned __int64 hexData = *(unsigned __int64*)buf[i]; 	printf("0x%.16I64X\n",hexData); }

user: user-4
content: 把buf的数据解析出来！
user-0 提问: 关于 自学 C 语言的问题。自学书籍 C Primer Plus

回复:
user: user-1
content: 南阳理工在线acm练习场： http://acm.nyist.net/JudgeOnline/problemset.php你能A掉多少题，就看你造化了。

user: user-2
content: 艺多不压身！ 有时去执行一个错误的决定总比优柔寡断或者没有决定要好得多。 手上的茧子磨的越厚，编程的水平才可能越高。  计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……  对学习编程者的忠告： 眼过千遍不如手过一遍！ 书看千行不如手敲一行！ 手敲千行不如单步一行！ 单步源代码千行不如单步对应汇编一行！  VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 对VC来说，所谓‘调试时’就是编译连接通过以后，按F10或F11键单步执行一步以后的时候，或者在某行按F9设了断点后按F5执行停在该断点处的时候。 （Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。）

user: user-3
content: 当当网搜索 C语言程序开发范例宝典(第2版) C语言经典编程282例 《C语言点滴》 《C语言课程设计案例精编》

user: user-4
content: 你可以快速把书看完。然后刷C语言经典100题

user: user-5
content: 语言对程序员来说应该不是问题，简单说语言是工具，到底是拿来做UI，做服务，做逻辑，都需要特定领域的知识，而不是语言自身，。

user: user-6
content: 学C语言, 个人推荐The C Programming Language首先要熟悉基本的语法,   然后做一些数据结构相关的练习题， 这个面试也会用到. 最后就是读一些自己感兴趣软件的源代码， 增加一些功能.....

user: user-7
content: 都弄懂了更好，基础牢一点后面学得更轻松。有的问题并不一定是马上学就能弄懂的，可能你看到后面的某个地方的时候会有恍然大悟的感觉。这书可以多看几遍，每一遍都应该是有收获的。至于练习题可以找找那些acm的题练练(ZOJ这些可以百度看看).
user-0 提问: 结构体指针

回复:
user: user-0
content: 你难道不知到地址也可以用整形输出吗

user: user-1
content: 问题是，你定义的结构体 struct student  {  int num;  int score;  struct student* next;  }; 在main函数中，也就是说，你的oi中的(struct student)类型并没有声明，出现类型不匹配的情况，将struct的定义放在全局就没问题了，/*main.cpp*/ #include<stdio.h>  struct student { 	int num; 	int score;		 	struct student* next; };  void oi(struct student *z);  int main() { 	struct student *k, *k1, p; 	k = &p; 	k1 = k; 	printf("%d %d ",k,k1); 	oi(&p); 	return 0;  }  void oi(struct student *z) { 	struct student *q; 	q = z; 	printf("%d",q); }

user: user-2
content: void oi(struct student *z); #include<stdio.h> int main() { struct student { int num; int score; struct student* next; }; struct student * k,*k1,p; k=&p;//p只是声明了，没有定义，也就是说没有为p分配内存，取地址无意义 k1=k;//此处k没有初始化，不能赋值 printf("%d %d ",k,k1); oi(&p); return 0;	 } void oi(struct student *z) { struct student *q; q=z; printf("%d",q);  }

user: user-3
content: k=&p;  没初始化

user: user-4
content: printf("%d %d ",k,k1); 把指针变量的值以整型输出？谁教你的？
user-0 提问: C语言正弦值输出结果的问题

回复:
user: user-1
content: sin和cos函数传入的参数是弧度不是角度

user: user-0
content: 我看看是否如此

user: user-2
content: 程序运行是正确的。 楼主没有搞清楚这个函数的使用方法，sin和cos函数传入的参数是弧度不是角度，你如果想得到sin(30°)的结果，先转换下吧
user-0 提问: C语言 有关指针的问题，希望大神们给讲解一下

回复:
user: user-0
content: 引用 4 楼 oYinGui1 的回复:[quote=引用 3 楼 slmw1234 的回复:] [quote=引用 2 楼 oYinGui1 的回复:]  *p1++     //等价于 *p1, p1++，但是并不是说单目*的优先级比++高 *++p1     //等价于 ++p1, *p1，同上，前缀后缀的++--优先级都是比单目*高的 (*p1)++   //这个就是解引用了再对指针指向的值自增  优先级查表就行。懒得查就自己加括号，不要写得自己都不知道是什么意思就行了  	printf("*p1++ = %d, *++p2 = %d, (*p3)++ = %d\n", *p1++, *++p2, (*p3)++); //*p1++在本行的打印结果是*p1指针指向地址的值，然后在下一行打印的时候打印出指向下一个地址里面的值。那是不是就是说在打印*p1++的同时，系统做了两个动作，第一个是因为++运算符的优先级大于*，所以p1的地址增量运算。第二个动作才是打印*p1指针指向的值到屏幕上。（*p3）也是同样做了两个动作。 	printf("*p1 = %d, *p2 = %d, *p3 = %d\n", *p1, *p2, *p3);//这里由于在上一行代码里*p1 和 *p3已经做了处理，所有打印发生了变化  [/quote] 差不多是这个意思。关于这种表达，可以翻看一下C++ primer，里面说的很详细。[/quote]   谢谢你的提示，我就是在看c primer plus 这本书自学的。

user: user-1
content: 引用 3 楼 slmw1234 的回复:[quote=引用 2 楼 oYinGui1 的回复:]  *p1++     //等价于 *p1, p1++，但是并不是说单目*的优先级比++高 *++p1     //等价于 ++p1, *p1，同上，前缀后缀的++--优先级都是比单目*高的 (*p1)++   //这个就是解引用了再对指针指向的值自增  优先级查表就行。懒得查就自己加括号，不要写得自己都不知道是什么意思就行了  	printf("*p1++ = %d, *++p2 = %d, (*p3)++ = %d\n", *p1++, *++p2, (*p3)++); //*p1++在本行的打印结果是*p1指针指向地址的值，然后在下一行打印的时候打印出指向下一个地址里面的值。那是不是就是说在打印*p1++的同时，系统做了两个动作，第一个是因为++运算符的优先级大于*，所以p1的地址增量运算。第二个动作才是打印*p1指针指向的值到屏幕上。（*p3）也是同样做了两个动作。 	printf("*p1 = %d, *p2 = %d, *p3 = %d\n", *p1, *p2, *p3);//这里由于在上一行代码里*p1 和 *p3已经做了处理，所有打印发生了变化  [/quote] 差不多是这个意思。关于这种表达，可以翻看一下C++ primer，里面说的很详细。

user: user-0
content: 引用 2 楼 oYinGui1 的回复: *p1++     //等价于 *p1, p1++，但是并不是说单目*的优先级比++高 *++p1     //等价于 ++p1, *p1，同上，前缀后缀的++--优先级都是比单目*高的 (*p1)++   //这个就是解引用了再对指针指向的值自增  优先级查表就行。懒得查就自己加括号，不要写得自己都不知道是什么意思就行了  	printf("*p1++ = %d, *++p2 = %d, (*p3)++ = %d\n", *p1++, *++p2, (*p3)++); //*p1++在本行的打印结果是*p1指针指向地址的值，然后在下一行打印的时候打印出指向下一个地址里面的值。那是不是就是说在打印*p1++的同时，系统做了两个动作，第一个是因为++运算符的优先级大于*，所以p1的地址增量运算。第二个动作才是打印*p1指针指向的值到屏幕上。（*p3）也是同样做了两个动作。 	printf("*p1 = %d, *p2 = %d, *p3 = %d\n", *p1, *p2, *p3);//这里由于在上一行代码里*p1 和 *p3已经做了处理，所有打印发生了变化

user: user-1
content: *p1++     //等价于 *p1, p1++，但是并不是说单目*的优先级比++高 *++p1     //等价于 ++p1, *p1，同上，前缀后缀的++--优先级都是比单目*高的 (*p1)++   //这个就是解引用了再对指针指向的值自增  优先级查表就行。懒得查就自己加括号，不要写得自己都不知道是什么意思就行了

user: user-2
content: *p1++ 你看看运算符的优先级，如果*的优先级比右边++大，那*p++就是取p指向的变量再对变量++。 如果*的优先级小于右边的++，那么先对指针p1进行++操作，再去p1指向的变量  （*p3）++  取p3指向的变量再对变量++。  你要弄清楚的是： 1.*和++的优先级问题。 2.指针的++操作代表什么？ 3.左++和右++的区别 4.数组名和指针的异同
user-0 提问: 循环内if判断过后直接销毁这段语句..

回复:
user: user-1
content: 楼主好想法，不过这种机制，我没听说过。

user: user-2
content: 引用 10 楼 Blizzard_whx 的回复:[quote=引用 9 楼 u013115296 的回复:] [quote=引用 3 楼 starytx 的回复:] 我真的没明白你在说什么void main() {       for(int op = 0 ; op < 5 ; op++)     {          if(op == 3)           cout << "DS" ;       MessageBox(NULL,TEXT("test"),TEXT("test"),0) ;    } } 这个if只是当 op == 3 才会成立..但是 op只有一次为3 但是每次他都会判断if..按理说..op等于3之后的if操作一点意义都没有....所以感觉有点累赘啦~[/quote] 首先，这句判断消耗不是很大，楼主大没必要把精力花在如何优化它上 其实，实在要做也不是没有办法，那就是  for(int op = 0;op < 5,;i++) {     if(op == 3)     {         //code         break;     } } for(int op = 0;op < 5,;i++) {      //code }     但是楼主觉得有这样的必要吗？[/quote] 写错了，第二个for循环从op=4开始

user: user-2
content: 引用 9 楼 u013115296 的回复:[quote=引用 3 楼 starytx 的回复:] 我真的没明白你在说什么void main() {       for(int op = 0 ; op < 5 ; op++)     {          if(op == 3)           cout << "DS" ;       MessageBox(NULL,TEXT("test"),TEXT("test"),0) ;    } } 这个if只是当 op == 3 才会成立..但是 op只有一次为3 但是每次他都会判断if..按理说..op等于3之后的if操作一点意义都没有....所以感觉有点累赘啦~[/quote] 首先，这句判断消耗不是很大，楼主大没必要把精力花在如何优化它上 其实，实在要做也不是没有办法，那就是  for(int op = 0;op < 5,;i++) {     if(op == 3)     {         //code         break;     } } for(int op = 0;op < 5,;i++) {      //code }     但是楼主觉得有这样的必要吗？

user: user-0
content: 引用 12 楼 u011192174 的回复:楼主好想法，不过这种机制，我没听说过。忘了..结贴了。。好蠢..

user: user-3
content: 1 没有这种机制 楼主想要的大概是一个能够自我编程的人工智能，如果真的有这种东西，它一定能够计算出当它出现后，人类已经一点用都没有了，然后把人类销毁掉  2 你的大括号是给编译器看的，运行看的是代码的意义而不是代码的格式，在某些情形下连大括号本身都会被编译器优化掉 如果想在结束循环之前做什么，在循环体的最后一行写下就行，如果不想明确的写出来，可以使用析构函数等机制

user: user-0
content: 引用 3 楼 starytx 的回复:我真的没明白你在说什么void main() {       for(int op = 0 ; op < 5 ; op++)     {          if(op == 3)           cout << "DS" ;       MessageBox(NULL,TEXT("test"),TEXT("test"),0) ;    } } 这个if只是当 op == 3 才会成立..但是 op只有一次为3 但是每次他都会判断if..按理说..op等于3之后的if操作一点意义都没有....所以感觉有点累赘啦~

user: user-0
content: 引用 1 楼 baichi4141 的回复:1 没有这种机制 楼主想要的大概是一个能够自我编程的人工智能，如果真的有这种东西，它一定能够计算出当它出现后，人类已经一点用都没有了，然后把人类销毁掉  2 你的大括号是给编译器看的，运行看的是代码的意义而不是代码的格式，在某些情形下连大括号本身都会被编译器优化掉 如果想在结束循环之前做什么，在循环体的最后一行写下就行，如果不想明确的写出来，可以使用析构函数等机制好吧..我想多了..

user: user-0
content: 引用 6 楼 zilaishuichina 的回复:lz为什么想把代码销毁了   是担心每次都要做if判断浪费时间 还是什么意思？只是觉得没必要的废操作看着膈应..

user: user-4
content: lz为什么想把代码销毁了   是担心每次都要做if判断浪费时间 还是什么意思？

user: user-5
content: 程序就是代码，计算机只会按照你的代码执行，真不知道你是想控制代码还是控制程序运行流程，有点乱

user: user-6
content: 楼主说的是美军侦查机的自毁么？

user: user-7
content: 我真的没明白你在说什么

user: user-8
content: 1 一些嵌入式环境估计运行时改变代码段也是可以的 2  你是想运行到所有大括号都输出信息？不知道可不可以用宏定义
user-0 提问: IOS平台，用C语言开发些什么？

回复:
user: user-1
content: Objective-C是C的超集，合法的C代码即OC的代码，故LZ的命题就有逻辑问题。

user: user-2
content: 不明觉厉，一同共勉！

user: user-3
content: 不知道为什么有了 C++ 还要衍生出这种东西...

user: user-4
content: 这个平台开发一次，那个平台再开发一次。 累死你！

user: user-4
content: 在多个平台开发，讲究是：跨平台，效率。

user: user-5
content: Objective-C与其它的语言的对接会在以后的时间里，只会给你带来麻烦！

user: user-4
content: user-5：   笑话一件！   难道你用cocos2D-x引擎开发游戏，你用C语言了？

user: user-5
content: 给你建议是： iOS平台上最好的做法是使用Objective-C编程。  用什么语言来编程，对程序员来说，不成问题。
user-0 提问: 数组问题，新手

回复:
user: user-1
content: 可以把写代码的人迁出去枪毙一百遍，完全不知道写的什么，各种错误

user: user-2
content: (unsigned char*) & a[0] 得到数组地址 相当于 a

user: user-3

user: user-0

user: user-4
content: 你这语句写的。各种问题啊。没返回值，参数类型也错误 那有 *char 的，都是char * #include <stdio.h> char a[10]; char dibm(char *a) { 	return	a[0]-1;  } void main() { 	char a[10]="bcdefe";  	printf("%c\n",dibm(&a[0])); }  a[0]-1; 就是a[0] 所指的值，减1， 这里应 是取数组的首地址，为参进入函数 ，

user: user-5
content: a[0]就是数组的首地址，将数组首地址传递给函数指针参数，a[0]-1就是a[0]的值减一

user: user-6

user: user-7
content: dibm(*char a)  {   a[0]-1;    }   1.没有写返回值类型，语法错误 2.参数类型没有写对，字符型指针，应该是 char * ，而不是 * char，C或者C++里面似乎没有这种写法 3.若函数没有返回值，那么这个函数相当于什么也没有做。 4.调用dibm时的实参，相当于是拷贝了一个指针进去。
user-0 提问: 数据结构栈Pop函数指针的问题

回复:
user: user-0
content: 引用 8 楼 u013163178 的回复:typedef struct { SElemType *base; /* 栈底room */ SElemType *top; /* 栈顶room */ int stacksize; /* 栈的当前容量 */ }SqStack;请问你把数据保存在什么地方了。 你如果想从参数里面带回数据，那么参数就要是引用类型的 书上就是这样写的，而且我觉得没错，这是顺序栈，只需要两个指针就可以访问栈中的内容，关于数据的保存请看initstack函数，是在内存中分配了一块连续的空间，栈顶指针指向栈顶，栈底指针指向栈底，因为内存的分配是连续的只通过指针的加减就可以来访问

user: user-1
content: typedef struct { SElemType *base; /* 栈底room */ SElemType *top; /* 栈顶room */ int stacksize; /* 栈的当前容量 */ }SqStack;请问你把数据保存在什么地方了。 你如果想从参数里面带回数据，那么参数就要是引用类型的

user: user-2
content: typedef struct { SElemType *base; /* 栈底room */ SElemType *top; /* 栈顶room */ int stacksize; /* 栈的当前容量 */ }SqStack;  这个就是节点啊？怎么和其他节点关联呢？没看懂这种栈

user: user-3
content: 将指针作为形参传入函数时，传的其实是一个副本，你修改副本对原值没影响的(类似交换两值那种)。在C里你要修改指针，就传指针的指针。C++里就传指针的引用。

user: user-4
content: 供参考：  Status GetTop(SqStack S, SElemType *e) { 	if(S.top == S.base) return ERROR; 	*e = *(S.top - 1);/*因为top指针指向栈顶元素的上一个位置，所以此处需要-1*/ 	return OK; }  Status Pop(SqStack *S, SElemType *e) { 	if(S->top == S->base) return ERROR; 	*e = *(S->top - 1); 	S->top--; 	return OK; }  int main(){ 	SqStack S; 	int i = 0, j = 0; 	char ch; 	char *m = &ch; 	char t[100], len; 	printf("please print some chars:"); 	InitStack(&S); 	scanf("%s", t); 	len = strlen(t); 	printf("%s", &t[0]); 	for(i; i<len; i++) 		Push(&S, t[i]);	 	Pop(&S, m); 	printf("%c\n", *m); 	return 0; }

user: user-0
content: 引用 2 楼 oYinGui1 的回复:将指针作为形参传入函数时，传的其实是一个副本，你修改副本对原值没影响的(类似交换两值那种)。在C里你要修改指针，就传指针的指针。C++里就传指针的引用。 不行啊，我还是不会写Pop，不过我后来想了想，把指针改为用数组，结果就出来了。虽说指针和数组差不多，但还是感觉指针好难，得多看看书

user: user-0
content: 引用 3 楼 liuhengxiao 的回复:这个就是节点啊？怎么和其他节点关联呢？没看懂这种栈 这个是顺序栈，地址是分配在一起的，通过栈顶指针的自动，也就是加减来访问栈中的值

user: user-0
content: 引用 2 楼 oYinGui1 的回复:将指针作为形参传入函数时，传的其实是一个副本，你修改副本对原值没影响的(类似交换两值那种)。在C里你要修改指针，就传指针的指针。C++里就传指针的引用。好像有点明白了，我再去试试，谢谢了。

user: user-0
content: 在线等回复，搞了好久还没搞出来。。。，我学过一点C++，不过大学老师教的那种，太基础了。。我指针是在C++里面学的，应该差不多吧
user-0 提问: warning C4305: "初始化": 从"double"到"const float"截断

回复:
user: user-0
content: 问题已经解决了，第一个for循环嵌套的内层for循环的自增变量不应该是year++   应是month++

user: user-1
content: double占的字节数float多 由double到float的时候，丢失了部分内容，损失精度而已。  4.3 改为4.3f
user-0 提问: 请问下为什么指针PS的不是地址，而是字符串

回复:
user: user-1
content: 额。。地址以字符串的形式显示给你看啊。显示的字符串不就是地址

user: user-2
content: 002BFE30不就是地址么

user: user-0
content: 引用 3 楼 FancyMouse 的回复:ostream<<char*有特殊重载（当成C风格字符串输出）。你想要输出char*实际的值就需要转成其他指针比如void*再输出。 ps输出vvvvvvvvv(9个v)，而*ps输出一个v怎么理解啊。ps不是应该是指向char型的指针吗？打印ps不就是打印ps所指向的地址吗？打印 *ps应该是打印ps所指向的地址的内容。为什么一个输出是9个V一个输出是一个V。

user: user-3
content: ostream<<char*有特殊重载（当成C风格字符串输出）。你想要输出char*实际的值就需要转成其他指针比如void*再输出。

user: user-4
content: 指的是地址，打印的时候转换成地址格式输出就可以了

user: user-5
content: 引用 4 楼 liqiming100 的回复:[quote=引用 3 楼 FancyMouse 的回复:] ostream<<char*有特殊重载（当成C风格字符串输出）。你想要输出char*实际的值就需要转成其他指针比如void*再输出。 ps输出vvvvvvvvv(9个v)，而*ps输出一个v怎么理解啊。ps不是应该是指向char型的指针吗？打印ps不就是打印ps所指向的地址吗？打印 *ps应该是打印ps所指向的地址的内容。为什么一个输出是9个V一个输出是一个V。[/quote]  ps是字符串”vvvvvvvvv“的地址，同时也是首元素地址，*ps是也就是这个字符串的第一个字符，*ps也就等同于ps[0]  转换为数组你可能更容易明白一点，char *ps=”vvvvvv“，等同于 char ps[]=”vvvvvvv“
user-0 提问: TC编程动画设计

回复:
user: user-1
content: 也许lz就差一个编程的

user: user-2
content: LZ会什么？

user: user-3
content: 找到位移和时间的关系(计算公式) 假如每隔100ms显示一次,总共显示10000次 long t=0.0; for(int i=0;i<10000;i++) {      t+=0.1;      计算位置;      在结果位置画图      sleep(100);      清洗,比如可以用背景色画个块覆盖 }

user: user-4
content: 1.知道当前的状态（位置，速度，加速度等） 2.由相关的物理公式（运动规律）推算下一个dt(delta t----三角形t)时的状态，画出来，停顿片刻擦去。。。。重复到某个特定状态（调整运动规律），。。。不断地重复

user: user-5
content: 复习《初中物理》自由落体运动

user: user-6
content: 你打算出多少钱

user: user-7
content: 这么有意思的程序，怎么能直接伸手！？ 不自己折腾折腾没意思！
user-0 提问: 关于vc打开exe文件的问题

回复:
user: user-0
content: 谢谢各位了，虽然还没有解决，但是我已经学到不少东西！

user: user-1
content: #include <stdio.h> #include <stdlib.h>  int main() {     double total_price = 0.0;     int type = 0;     int quantity = 0;     const double type1_price = 3.50;     const double type2_price = 5.50;     printf("输入版本(1 或 2):");     scanf("%d", &type);     printf("输入大小:");     scanf("%d", &quantity);     total_price = 	quantity * (type1_price + 		    (type - 1) * (type2_price - type1_price));     printf("The price for %d of type %d is $%.2f\n", quantity, type, 	   total_price);     getchar();     system("pause");     return 0; }

user: user-2
content: 在运行里面输入 cmd，运行，再把你那个ｅｘｅ托到那个黑框里面，按回车

user: user-0
content: 我也是用vc6.0的，但是如果把printf("pause")改成system("pause")会显示错误。

user: user-3
content: 你用什么编译器的？我用VC++6.0编译没问题，但是用VS编译就闪退，用断点单步调试VS也没问题那，你那个加个头文件#include "windows.h" 你再把那个printf("pause")改成system("pause")

user: user-0
content: 我知道拖到控制台啊！我就是想要不拖控制台也能用啊！毕竟拖去控制台还是有点麻烦啊

user: user-4
content: 拖到控制台下运行

user: user-0
content: 还是不行啊

user: user-5
content: return 0;放到最后

user: user-0
content: #include<stdio.h>//一个物品有两个版本，分别输入版本和大小得出价格 int main(void) { 	double total_price = 0.0; 	int type = 0; 	int quantity =0; 	const double type1_price = 3.50; 	const double type2_price = 5.50; 	printf("输入版本(1 或 2):"); 	scanf("%d",&type); 	printf("输入大小:"); 	scanf("%d",&quantity); 	total_price = quantity*(type1_price + (type - 1)*(type2_price - type1_price)); 	printf("The price for %d of type %d is $%.2f\n",quantity,type,total_price); 	return 0;     printf("pause"); 	getchar(); } 代码没问题

user: user-1
content: 上代码

user: user-0
content: 还是不行啊!

user: user-0
content: 加在最后吗？那是一个计算的程序，最后的答案没有出来就退出了。我之前编写的程序也一样

user: user-6
content: system("pause");
user-0 提问: 指针问题

回复:
user: user-0
content: 还是我的 free问题造成的，free后造成没有指向，还有就是对multlines和count复制有个bug，要交换下，谢谢大家！

user: user-1
content: 引用 7 楼 boxmanstan 的回复:[quote=引用 5 楼 u012514171 的回复:]    const char *line = words;还能这样写？  为毛不可以？[/quote]可以的，刚才没细看你的代码，才知道words是传的参数。sorry！

user: user-0
content: 代码有错 变更下代码：   char** getwordsCount(const char *words, int *count){ 	if(words == NULL){ 		return NULL; 	} 	const char *line = words; 	*count = 0; 	char *temp = NULL;     char **multlines = NULL; 	while(1){ 		while(*line && isspace(*line))line++; 		if(temp == NULL){ 			temp = (char*)malloc(sizeof(char) * 100); 		} 		if(*line){ 			int done = 0; 			int tempcount = 0; 			while(!done){ 				switch(*line){ 				case ' ': 				case '\r': 				case '\t': 				case '\n': 				case '\v': 				case '\f': 				case '\0': 					done = 1; 					break; 				default: 					temp[tempcount] = *line; 					tempcount++; 					break; 				} 				if(*line){ 					line++; 				} 			} 			temp[tempcount] = '\0'; 			multlines = (char**)realloc(multlines, sizeof(char*) * ((*count) + 1)); 			(*count) = (*count) + 1; 			multlines[(*count)] = temp; 			free(temp); 			temp = NULL; 		}else{ 			break; 		} 	} 	return multlines; }

user: user-2
content: 引用 5 楼 u012514171 的回复:   const char *line = words;还能这样写？  为毛不可以？

user: user-0
content: 谢谢boxman我没仔细测试  line++写在哪里是会出现死循环：我修改了下，这里就不贴出来了

user: user-1
content: const char *line = words;还能这样写？

user: user-2
content: 我觉得这么套死循环太危险，一个地方处理不好就完蛋。比如你这个，单独传个字母就死循环了

user: user-2
content: 我觉得这里没有语法错误

user: user-2
content: 引用 1 楼 user-3 的回复:字符串赋值不能用 = 赋值，要用strcpy，= 号只是将指针的值赋给了变量。  guys, oh,no

user: user-3
content: 字符串赋值不能用 = 赋值，要用strcpy，= 号只是将指针的值赋给了变量。
user-0 提问: 关于set_terminate（）调用问题

回复:
user: user-0
content: 有缘人快帮我看看啊

user: user-0
content: 为什么编译报错，运行没问题呢，逐行调试就提议以上的信息

user: user-0
content: 我是用的是vs2010提示： 为“f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\throw.cpp”查找源。Checksum: MD5 {71 72 36 66 b4 3b 91 95 84 76 e7 9d d9 88 65 52} 文件“f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\throw.cpp”不存在。 正在脚本文档中查找“f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\throw.cpp”... 正在项目中查找“f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\throw.cpp”。 在项目中未找到该文件。 正在目录“d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src\”中查看... 正在目录“d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc\”中查看... 正在目录“d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\atl\”中查看... 正在目录“d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include\”中查看... 正在目录“d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfc”中查看... 正在目录“d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\mfcm”中查看... 正在目录“d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\src\atl”中查看... 正在目录“d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\crt\src”中查看... 正在目录“”中查看... 正在目录“d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include”中查看... 正在目录“d:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\include”中查看... 正在目录“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include”中查看... 正在目录“C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\\include”中查看... 正在目录“”中查看... 活动解决方案的调试源文件设置指明调试器不会要求用户查找文件: f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\throw.cpp。 调试器未能找到源文件“f:\dd\vctools\crt_bld\self_x86\crt\prebuild\eh\throw.cpp”。

user: user-1
content: vc6.0 没问题

user: user-2
content: 断点要打在exit（-1）之前，不然程序退出就看不到了。

user: user-0
content: 为什么没有问愿意帮我解答啊
user-0 提问: 导入文字坐标，生成图片

回复:
user: user-1
content: 仅供参考#pragma comment(lib,"gdi32") #include <windows.h> #include <stdio.h>  int main() {     const DWORD uWidth = 18 + 17 * 256, uHeight = 18 + 17 * 128;      PBITMAPINFO pbmi = (PBITMAPINFO) LocalAlloc (LPTR, sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2);     pbmi->bmiHeader.biSize = sizeof (BITMAPINFOHEADER);     pbmi->bmiHeader.biWidth = uWidth;     pbmi->bmiHeader.biHeight = uHeight;     pbmi->bmiHeader.biPlanes = 1;     pbmi->bmiHeader.biBitCount = 1;     pbmi->bmiHeader.biSizeImage = ((uWidth + 31) & ~31) / 8 * uHeight;     pbmi->bmiColors[0].rgbBlue = 0;     pbmi->bmiColors[0].rgbGreen = 0;     pbmi->bmiColors[0].rgbRed = 0;     pbmi->bmiColors[1].rgbBlue = 255;     pbmi->bmiColors[1].rgbGreen = 255;     pbmi->bmiColors[1].rgbRed = 255;      HDC hDC = CreateCompatibleDC (0);     void * pvBits;     HBITMAP hBitmap = CreateDIBSection (hDC, pbmi, 0, &pvBits, NULL, 0);     SelectObject (hDC, hBitmap);     HFONT hFont = CreateFont (16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "宋体"); //  HFONT hFont = CreateFont (16, 0, 0, 0, 0, 0, 0, 0, SHIFTJIS_CHARSET, 0, 0, 0, 0, "宋体");     SelectObject (hDC, hFont);     BitBlt (hDC, 0, 0, uWidth, uHeight, NULL, 0, 0, WHITENESS);      char c[4];     int i, j;     for (i = 128; i < 256; i++) {         sprintf (c, "%02X", i);         TextOut (hDC, 1, (i - 127) * 17 + 1, c, 2);     }     for (j = 0; j < 256; j++) {         sprintf (c, "%02X", j);         TextOut (hDC, (j + 1)* 17 + 1, 1, c, 2);     }     for (i = 128; i < 256; i++) {         for (j = 0; j < 256; j++) {             c[0] = (char) i;             c[1] = (char) j;             TextOut (hDC, (j + 1) * 17 + 1, (i - 127) * 17 + 1, c, 2);         }     }     for (i = 0; i < 130; i++) {         MoveToEx (hDC, 0, i * 17, NULL);         LineTo (hDC, uWidth, i * 17);     }     for (j = 0; j < 258; j++) {         MoveToEx (hDC, j * 17, 0, NULL);         LineTo (hDC, j * 17, uHeight);     }      BITMAPFILEHEADER bmfh;     bmfh.bfType = *(PWORD) "BM";     bmfh.bfReserved1 = 0;     bmfh.bfReserved2 = 0;     bmfh.bfOffBits = sizeof (BITMAPFILEHEADER) + sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2;     bmfh.bfSize = bmfh.bfOffBits + pbmi->bmiHeader.biSizeImage;      HANDLE hFile = CreateFile ("goal.bmp", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, 0, 0);     if (hFile != INVALID_HANDLE_VALUE) {         DWORD dwWritten;         WriteFile (hFile, &bmfh, sizeof (BITMAPFILEHEADER), &dwWritten, NULL);         WriteFile (hFile, pbmi, sizeof (BITMAPINFOHEADER) + sizeof (RGBQUAD) * 2, &dwWritten, NULL);         WriteFile (hFile, pvBits, pbmi->bmiHeader.biSizeImage, &dwWritten, NULL);          CloseHandle (hFile);     }      DeleteObject (hFont);     DeleteObject (hBitmap);     DeleteDC (hDC);     LocalFree (pbmi);      return 0; }
user-0 提问: 新手小问题  书上的的问题没答案！还带想不出来的！只能求助大家了！

回复:
user: user-1
content: char s[]="China"; char d[6]; int i; for (i=0;i<5;i++) d[i]=s[i]+4; d[5]=0; printf("%s\n",d);

user: user-2
content: 循环密码吧 小写字母 c = ( c - ‘a'  + 4) %26 + 'a';  大写字母 c = ( c - ‘A'  + 4) %26 + 'A';

user: user-3
content: 引用 楼主 u014497083 的回复:将“China”译成密码。 加密规则是：用原来的字母后面的第四个字母代替原来的字母 （提示：设5个字符型变量，存放5个字符，经运行使各 ASCII 码增4，在输出）  z后面第四个字母是什么？

user: user-4
content: 引用 1 楼 zhao4zhong1 的回复:char s[]="China"; char d[6]; int i; for (i=0;i<5;i++) d[i]=s[i]+4; d[5]=0; printf("%s\n",d); ++

user: user-5
content: ++  引用 1 楼 zhao4zhong1 的回复:char s[]="China"; char d[6]; int i; for (i=0;i<5;i++) d[i]=s[i]+4; d[5]=0; printf("%s\n",d);
user-0 提问: 在Linux环境下怎么用C播放音乐

回复:
user: user-1
content: 参考http://blog.sina.com.cn/s/blog_75df0af40100pgrs.html  引用 楼主 letingoo 的回复:在做一个实验的时候想加入背景音乐，求助怎么用C放音乐

user: user-2
content: 用gstreamer也行
user-0 提问: c99下for 打印不出来？

回复:
user: user-0
content: 引用 2 楼 caozhy 的回复:pow是浮点运算，有累进误差，不要用等号比较，不然可能出现问题。  你应该用两数相减取绝对值小于一个很小的数的办法来比较相等。   牛X，按你说的一试就行了，大神。膜拜！！！

user: user-1
content: LZ的环境，原始的提示信息。

user: user-2
content: pow是浮点运算，有累进误差，不要用等号比较，不然可能出现问题。  你应该用两数相减取绝对值小于一个很小的数的办法来比较相等。

user: user-3
content: 你这种问题闲的蛋疼， 自己给自己挖坑， 有意思吗？
user-0 提问: 求大神指导，c语言写递归下降构造器

回复:
user: user-1
content: http://www.codeproject.com/Articles/418776/How-to-replace-recursive-functions-using-stack-and

user: user-2
content: 可以非常容易地将tail recursion式的递归改造成非递归式；一般来说，大部份的递归函数不太容易转换成非递归表达。 递归与非递归的矛与盾：pros and cons  这个课题很好！

user: user-0
content: 写具体的，我看不懂啊

user: user-1
content: LEX+YACC FLEX+BISON
user-0 提问: Debug Error

回复:
user: user-1
content: 判断是否越界访问，可以在数组的最后一个元素之后对应的地址处设置数据读写断点。如果该地址对应其它变量干扰判断，可将数组多声明一个元素，并设置数据读写断点在该多出元素对应的地址上。 #include <time.h> #include <stdlib.h> #include <windows.h> int main() {     int a,b[11];//本来是b[10]，为判断哪句越界，故意声明为b[11]      srand((unsigned int)time(NULL));//按两次F11，等黄色右箭头指向本行时，调试、新建断点、新建数据断点，地址：&b[10]，字节计数：4，确定。     while (1) {//按F5，会停在下面某句，此时a的值为10，b[10]已经被修改为对应0..4之一。         b[(a=rand()%11)]=0;         Sleep(100);         b[(a=rand()%11)]=1;         Sleep(100);         b[(a=rand()%11)]=2;         Sleep(100);         b[(a=rand()%11)]=3;         Sleep(100);         b[(a=rand()%11)]=4;         Sleep(100);     }     return 0; }

user: user-2
content: 越界了，注意点

user: user-0
content: 引用 12 楼 mujiok2003 的回复:[quote=引用 8 楼 easypal 的回复:] 我刚刚在linux下编译通过, 也能正常运行.  这或许是microsoft的BUG. 有趣  越界访问，行为未定义。[/quote]  好专业

user: user-3
content: 引用 8 楼 easypal 的回复:我刚刚在linux下编译通过, 也能正常运行.  这或许是microsoft的BUG. 有趣  越界访问，行为未定义。

user: user-3
content: pp = (char **)malloc(10);   --->      pp = (char **)malloc(10 * sizeof(char*));

user: user-0
content: 引用 7 楼 user-4 的回复:[quote=引用 4 楼 easypal 的回复:] [quote=引用 3 楼 user-4 的回复:] while (*p && *p != ' ') p++;  兄弟, 我的代码是在 free(pp) 报错的[/quote]  看错了,是pp[c] = 0;此时c=2 pp2 = pp2 + 4*3; 因此越界了[/quote]   引用 7 楼 user-4 的回复:[quote=引用 4 楼 easypal 的回复:] [quote=引用 3 楼 user-4 的回复:] while (*p && *p != ' ') p++;  兄弟, 我的代码是在 free(pp) 报错的[/quote]  看错了,是pp[c] = 0;此时c=2 pp2 = pp2 + 4*3; 因此越界了[/quote]  哦. 你说的对.

user: user-0
content: 在vs2012里, 只要malloc的大小大于 strlen(w) 就不会报.

user: user-0
content: 我刚刚在linux下编译通过, 也能正常运行.  这或许是microsoft的BUG. 有趣

user: user-4
content: 引用 4 楼 easypal 的回复:[quote=引用 3 楼 user-4 的回复:] while (*p && *p != ' ') p++;  兄弟, 我的代码是在 free(pp) 报错的[/quote]  看错了,是pp[c] = 0;此时c=2 pp2 = pp2 + 4*3; 因此越界了

user: user-0
content: 引用 5 楼 user-4 的回复:[quote=引用 4 楼 easypal 的回复:] [quote=引用 3 楼 user-4 的回复:] while (*p && *p != ' ') p++;  兄弟, 我的代码是在 free(pp) 报错的[/quote]   你呆吗?上面的循环终止条件不对,c的增长是不可预计的[/quote]   你确定? 你仔细看看.  我调试了下, pp 在malloc后和free前的值都没变.

user: user-4
content: 引用 4 楼 easypal 的回复:[quote=引用 3 楼 user-4 的回复:] while (*p && *p != ' ') p++;  兄弟, 我的代码是在 free(pp) 报错的[/quote]   你呆吗?上面的循环终止条件不对,c的增长是不可预计的

user: user-0
content: 引用 3 楼 user-4 的回复:while (*p && *p != ' ') p++;  兄弟, 我的代码是在 free(pp) 报错的

user: user-4
content: while (*p && *p != ' ') p++;

user: user-0
content: 引用 1 楼 user-4 的回复:兄弟,越界了  c <= 2. 怎么会越界?

user: user-4
content: 兄弟,越界了
user-0 提问: 寻找众数的程序修正

回复:
user: user-1
content: 大概这么做就可以了 1）计数--可以像计数排序那样计数（知道范围整形），也可以先排序后计数（任何类型数据） 2）求最大计数。 2）求有几个并列的最大计数。

user: user-0
content: [quote=引用 1 楼 turingo 的回复:] 类似于这样：  count = 0; ... for() {     if(array[i] == number) count++; } ... if(count == 0) return 0; if(count == 1) return 1; return -1;  我不大明白，count 用于记各个数字出现的次数且到下一个新数字是就被重设为1； 这个判断的意义在哪呢？

user: user-2
content: 类似于这样：  count = 0; ... for() {     if(array[i] == number) count++; } ... if(count == 0) return 0; if(count == 1) return 1; return -1;  引用 楼主 keroooo 的回复:int number = array[0]; int mode = number; int count = 1; int countMode = 1;  for (int i=1; i<size; i++) {       if (array[i] == number)        { // count occurrences of the current number          countMode++;       }       else       { // now this is a different number             if (count > countMode)              {                   countMode = count; // mode is the biggest ocurrences                   mode = number;             }            count = 1; // reset count for the new number            number = array[i];   } }  这是关于寻找众数的一个小片段，但是只能处理存在一个众数的情况，若是众数不止一个，需要返回 -1，求修正
user-0 提问: 新人！自学中！高手勿喷！谢谢！

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

user: user-2
content: 记住回车也是字符

user: user-3
content: 应该系统把“enter”作为字符输入进去了，先输“123”回车再输“4567”回车，那么6个字符初始化的值应该是c1=1;c2=2;c3=3;c4="enter"（就是“\n”）;c5=4;c6=5;这样在输出的时候就是“1245”了，不过如果第一行输入的数字是5个的话，就是“c6=“enter””了，然后其他的都一样。你可以把所有的都输出一遍。这样方便理解。

user: user-4
content: 不知道对你的问题理解是否正确哈 在你输入按回车的时候要考虑到回车也是字符的问题  但是由于回车在输出的时候看不到 所以往往会误导你    由于getchar的返回值其实是一个int类型  所以你可以定义俩个int类型的变量 接收getchar的返回值，或者直接把c5，c6改成int类型 然后把这俩个变量输出  这样便于你观察

user: user-0
content: 谢谢了！  都说我是新手了！刚学一周！希望 大神不要介意！

user: user-5
content: 建议LZ单步调试，查看输入后各变量的值， getchar()会接受一个字符，包括你按下的Enter键， 要弄清楚一点，查一查“回车、换行”，这个很多人都弄不明白

user: user-6
content: 楼主的这几个帖子，还是输入输出的问题，建议还是好好看看书吧
user-0 提问: c语言数据库编程，往oracle中插入一条数据，编译过不去

回复:
user: user-1
content: varchar yw_gxsj[20] = asctime(timenow_t); 改成 varchar yw_gxsj[20]; strcpy(yw_gxsj, asctime(timenow_t));

user: user-1
content: 引用 2 楼 pan3633330 的回复:[quote=引用 1 楼 user-1 的回复:]  varchar yw_gxsj[20] = asctime(timenow_t); 改成 varchar yw_gxsj[20]; strcpy(yw_gxsj, asctime(timenow_t));  多谢哥们，已经能编译了 还能告诉我为什么要这样使用啊？ [/quote] char*不能直接赋值给char[]，类型不同

user: user-0
content: 引用 1 楼 user-1 的回复:varchar yw_gxsj[20] = asctime(timenow_t); 改成 varchar yw_gxsj[20]; strcpy(yw_gxsj, asctime(timenow_t));  多谢哥们，已经能编译了 还能告诉我为什么要这样使用啊？
user-0 提问: C语言--将HTML文本导入一个程序 然后通过这个程序把这个HTML里包涵的点输出到EXCEL中

回复:
user: user-1
content: 仅供参考，尽管是VB6： Private Function StrFormat(s As String) As String On Error Resume Next Dim Buf As String Dim StrTemp As String Dim c As String Dim i As Long Dim j As Long Dim k As Long Dim L As Long     Buf = s     Do         L = InStr(1, Buf, "<style", vbTextCompare)         If L > 0 Then             k = InStr(L + 6, Buf, "</style>", vbTextCompare)             If k > 0 Then                 Buf = Left(Buf, L - 1) + Mid(Buf, k + 8)             Else                 Buf = Left(Buf, L - 1)                 Exit Do             End If         Else             Exit Do         End If     Loop     Do         L = InStr(1, Buf, "<script", vbTextCompare)         If L > 0 Then             k = InStr(L + 7, Buf, "</script>", vbTextCompare)             If k > 0 Then                 Buf = Left(Buf, L - 1) + Mid(Buf, k + 9)             Else                 Buf = Left(Buf, L - 1)                 Exit Do             End If         Else             Exit Do         End If     Loop     Buf = Replace(Buf, "&", "&")     Buf = Replace(Buf, """, Chr(34)) '替换成双引号     Buf = Replace(Buf, "<", "<")     Buf = Replace(Buf, ">", ">")     Buf = Replace(Buf, " ", "")     Buf = Replace(Buf, "<", " <")     Buf = Replace(Buf, ">", "> ")     Buf = Replace(Buf, " ", "")     Buf = Replace(Buf, Chr(26), " ")     Buf = Replace(Buf, Chr(10), " ")     Buf = Replace(Buf, Chr(9), " ")     Buf = Replace(Buf, Chr(13), " ")     Buf = LTrim(Buf)     Buf = RTrim(Buf)     '您可加入其他替换     StrTemp = ""     For i = 1 To Len(Buf)         c = Mid(Buf, i, 1)         Select Case c             Case "<"                 If i <> 1 Then                     StrTemp = StrTemp & Mid(Buf, j + 1, i - j - 1)                 End If             Case ">"                 j = i         End Select     Next i     L = Len(StrTemp)     Do         Buf = Replace(StrTemp, "  ", " ")         i = Len(Buf)         If i = L Then Exit Do         L = i         StrTemp = Buf     Loop     StrFormat = Buf End Function

user: user-2
content: 要求必须用C语言来做吗？ C 应该也有相应的类库吧，具体不了解。 但是这种处理文件的工作，用脚本比如  python  之类的搞起来肯定更方便。  python 肯定有现成的操作 xml 和 excel 的库,而且不用你自己处理字符串细节。

user: user-0
user-0 提问: VC编程，C语言，scanf,printf问题

回复:
user: user-1
content: http://bbs.csdn.net/topics/390471779

user: user-2
content: 谁先谁后都没关系，重要的是你的格式、变量、实际输入顺序需要能对应起来

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

user: user-3
content: 引用第三种：for(i=0;i<1;i++)   //name不放最后                   {                       printf("Input the number,name,and three scores of the %dth student:\n",i+1);                       scanf("%d,%s,%d,%d,%d",&a[i].num,a[i].name,&a[i].score[0],&a[i].score[0],&a[i].score[0]);                    }  输入的时候，第二部分接收的内容为bao,78,79,90，后面的3个输入整形等于没有初始化 建议你改成   printf("Input the number,name,and three scores of the %dth student:\n",i+1);                       scanf("%d,%d,%d,%d,%s",&a[i].num,&a[i].score[0],&a[i].score[0],&a[i].score[0],a[i].name);  把名字放在最后面

user: user-0
content: 别沉啊！！！！！！！！！1

user: user-3
content: %d的输入可以以“，”或者空格 或者回车来区分，但%s 不能以“，”区分，你的输入中，第一个参数传递给%d，遇到“，”正确传递，但是第二个传值是%s，“，”会被当做该参数的内容一并传递，一直到遇到回车符 %s才赋值结束 你分开打印就会发现%s内容保存的内容了
user-0 提问: 求解数据结构OrderInsert（ev，en，cmp）怎么理解

回复:
user: user-1
content: 插入排序（要插入的值，已排好序的数组的元素个数，比较函数） 我猜。

user: user-2
content: 有奖竟猜开始...

user: user-2
content: 你是让我们理解这些缩写词的意义吗？ OrderInsert: 有序插入？ ev: element value, 元素值？ en: element node 元素结点？ cmp: compare 比较  你的英文缩写常识好不好呀？

user: user-3
content: 他这个是教材上截取的（数据结构严蔚敏P67)。代表EventList,Event,compare
user-0 提问: 关于自己实现atoi遇到的问题？

回复:
user: user-0
content: 好了，谢谢 少了一个分号 int Ret_Integer = 0； 谢谢

user: user-0
content: 谢谢 但是我加了那句还是报错 ，同样的错误，是为什么啊？求救

user: user-1
content: int myatoi(char* str)   {     int Ret_Integer = 0     while（*str）     {     Ret_Integer = Ret_Integer* 10+ (*str++ - '0');     }       return Ret_Integer;   }

user: user-0
content: 请教一下大家
user-0 提问: Debug Assertion Failed!请大家帮忙解决。

回复:
user: user-0
content: 问题已经解决了，是因为我定义 的文件夹为test.dat，在程序前半部分： if((fp=fopen("f:\\test.dat","w"))==NULL) 但是在程序后面却只写了 fp=fopen("test","r"); 把这一句改为 fp=fopen("test.dat","r"); 就ok了。

user: user-1
content: 看看fp是否为null。 我猜你目录下没有test这个文件。

user: user-0
content: 引用 8 楼 Saleayas 的回复:fp=fopen("test","r"); _assert(fp); if(!fp) { ERROR.... } 什么意思呢？弄不明白，求指教。

user: user-2
content: fp=fopen("test","r"); _assert(fp); if(!fp) { ERROR.... }

user: user-2
content: _TSCHAR * __cdecl _fgetts (         _TSCHAR *string,         int count,         FILE *str         ) {     FILE *stream;     _TSCHAR *pointer = string;     _TSCHAR *retval = string;     int ch;      _VALIDATE_RETURN(( string != NULL ) || ( count == 0 ), EINVAL, NULL);     _VALIDATE_RETURN(( count >= 0 ), EINVAL, NULL);     _VALIDATE_RETURN(( str != NULL ), EINVAL, NULL);  你的 fp 是没有打开，为 NULL。

user: user-0
content: 引用 4 楼 zhao4zhong1 的回复:崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。不是很懂啊，请求实际操作指教。能不能帮我修改调试？

user: user-0
content: 引用 3 楼 Symfund 的回复: fp=fopen("test","r"); memset(str, 100, '\0'); // 加上这句试试看！ fgets(str,100,fp); printf("%s\n",str); fclose(fp);  你的意思是清零啊，但是没有解决问题，而且清零函数也没写对，应该是menset(str,'\0',100);不过这里不是请不清零的问题呐。

user: user-3
content: 崩溃的时候在弹出的对话框按相应按钮进入调试，按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。

user: user-4
content: fp=fopen("test","r"); memset(str, 100, '\0'); // 加上这句试试看！ fgets(str,100,fp); printf("%s\n",str); fclose(fp);

user: user-0
content: 引用 1 楼 user-5 的回复:这个可以自己设单步调式撒设置了单步调式，可是仍然不知道怎么改，错误在这几行： fp=fopen("test","r");         fgets(str,100,fp);         printf("%s\n",str);         fclose(fp); 求指教。

user: user-5
content: 这个可以自己设单步调式撒
user-0 提问: 新手学习数据结构时，顺序栈实现时运行总是停止工作，编译又没有错误，求大神解释一下

回复:
user: user-0
content: 嗯，谢谢了，因为只简单学过c++，数据结构又是c语言版的，所以有时候转不过来，还是得多练习，多谢了

user: user-1
content: 以下的用法不正确，且S没有分配空间，结果难料： SqStack *S; InitStack(SqStack S); 应该改为： SqStack S; InitStack(&S);  另外学数据结构的时候，一定要多去调试，尤其是单步调试。
user-0 提问: 结构体名字可以和这个结构体的变量名一样吗？

回复:
user: user-0
content: 谢谢 楼上诸位大神

user: user-1
content: 语法上可以，编译器能分辨处who是who； 但是人觉得别扭，所以实践中不推荐。

user: user-2
content: 觉得别扭就不要这样了。

user: user-3
content: 可以 因为 struct A 和 A 是两个不同的东西

user: user-4
content: 可以，C,C++都可以，只是这种用法很别扭。 类型名，和变量名同名，读代码会有一种混乱的感觉。 虽然有人推荐这种用法，不过不常用。

user: user-5
content: 建议这样的方式来命名：  typedef struct {     int x;     int y; }point_t;  point_t point;  引用 楼主 u013539260 的回复:struct pn544_dev *pn544_dev = dev_id;  请大家帮我看看这句，可以这么用？怎么看着很别扭啊。

user: user-6
content: 可以 名称空间不同不会冲突

user: user-7
content: 我试验了一下。竟然可以，好吧，不过个人不推荐这样做。。。不过这样用也省去了一些命名的烦恼。。。  #include<stdio.h>  struct pn544_dev{	//一般性定义结构体 	char a; };	  typedef struct {		//定义一个数据类型 	char a; }pn545_dev; int main() {  	struct pn544_dev *dev_id; 	//struct pn544_dev *pn544_dev = dev_id;	//这个可以，我最初猜想是因为数据类型不同，可是下面的一句，打破了我的猜想。 	struct pn544_dev pn544_dev;	//这个也是可以，可见不是数据类型的愿因 	pn544_dev.a='a'; 	putchar(pn544_dev.a);  	pn545_dev pn545_dev;		//这个竟然也可以，即使用typedef声明了数据类型，竟然也可以同名。 	pn545_dev.a= 'b' 	putchar(pn545_dev.a); 	return 0; }

user: user-8
content: struct struct [tag] { member-list } [declarators];  [struct] tag declarators;  The struct keyword defines a structure type and/or a variable of a structure type. See Anonymous Structures and Unsized Array in a Structure for more information.  A structure type is a user-defined composite type. It is composed of "fields" or "members" that can have different types.  In C++, a structure is the same as a class except that its members are public by default.  Using a Structure  In C, you must explicitly use the struct keyword to declare a structure. In C++, this is unnecessary once the type has been defined.  You have the option of declaring variables when the structure type is defined by placing one or more comma-separated variable names between the closing brace and the semicolon.  For related information, see class, union, and enum.  Example 1  struct PERSON              // Declare PERSON struct type {    int   age;              // Declare member types    long  ss;    float weight;    char  name[25]; } family_member;           // Define object of type PERSON     struct PERSON sister;   // C style structure declaration    PERSON brother;         // C++ style structure declaration     sister.age  = 13;       // assign values to members    brother.age =  7; Structure variables can be initialized. The initialization for each variable must be enclosed in braces.  Example 2  struct POINT            // Declare POINT structure {    int x;               // Define members x and y    int y; } spot = { 20, 40 };    // Variable spot has                         //     values x = 20, y = 40 struct POINT there;     // Variable there has POINT type struct CELL             // Declare CELL bit field {    unsigned character  : 8;  // 00000000 ????????    unsigned foreground : 3;  // 00000??? 00000000    unsigned intensity  : 1;  // 0000?000 00000000    unsigned background : 3;  // 0???0000 00000000    unsigned blink      : 1;  // ?0000000 00000000 } screen[25][80];       // Array of bit fields
user-0 提问: 来高手解答,自动属性创建宏,宏模拟描述语言的研究....

回复:
user: user-0
content: 蛋疼啊,

user: user-0
content: 引用 1 楼 zhao4zhong1 的回复:Code Generation没用过

user: user-1
content: Code Generation
user-0 提问: 关于C语言指针的问题

回复:
user: user-1
content: 二楼的正解    郝斌的自学C语言也是这样写的

user: user-2
content: 楼上正解！！

user: user-3
content: #include <stdio.h> #define SWAP(a,b) do ((&(a))!=(&(b)))?((a)^=(b)^=(a)^=(b)):((a)=(a)); while (0) char   *p1="1" ,*p2="2" ; char    c1=1   , c2=2   ; short   s1=1   , s2=2   ; int     i1=1   , i2=2   ; __int64 I1=1i64, I2=2i64; float   f1=1.0f, f2=2.0f; double  d1=1.0 , d2=2.0 ; void main() {     SWAP((int)p1,(int)p2);                printf("char *     %5s,   %5s\n",p1,p2);     SWAP(c1,c2);                          printf("char       %5d,   %5d\n",c1,c2);     SWAP(s1,s2);                          printf("short      %5d,   %5d\n",s1,s2);     SWAP(i1,i2);                          printf("int        %5d,   %5d\n",i1,i2);     SWAP(I1,I2);                          printf("__int64 %5I64d,%5I64d\n",I1,I2);     SWAP(*(int     *)&f1,*(int     *)&f2);printf("float      %5g,   %5g\n",f1,f2);     SWAP(*(__int64 *)&d1,*(__int64 *)&d2);printf("double    %5lg,  %5lg\n",d1,d2);      SWAP(c1,c1);     printf("%d\n",c1); } //char *         2,       1 //char           2,       1 //short          2,       1 //int            2,       1 //__int64     2,    1 //float          2,       1 //double        2,      1 //2

user: user-4
content: LZ要多看书啊

user: user-5
content: 楼上的就很清晰了，同意！

user: user-6
content: LZ要多看书啊 # include <stdio.h>  void swint(int *a, int *b);  int main() { 	int i = 2; 	int j = 3;  	printf("i = %d, j = %d\n", i, j);  	swint(&i, &j); 	printf("after swap:\n"); 	printf("i = %d, j = %d\n", i, j);  	return 0; }  void swint(int *a, int *b) { 	int tem;  	tem = *a; 	*a = *b; 	*b = tem; }
user-0 提问: C语言数据库写入数据有问题

回复:
user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:[quote=引用 2 楼 pan3633330 的回复:] [quote=引用 1 楼 zhao4zhong1 的回复:] 先在查询分析器里面执行相应T-SQL语句成功后再在代码中使用。 insert into yw_test (xh,xm,xb,yx,ywcj,sxcj,yycj,zycj,hgbz,gxsj) vlaues('1234','李三','男','南京大学',94,93,92,91,'y','1990/2/12') 这个可以写进去 但是查询不到记录 这是为什么啊？[/quote]   Transact-SQL 参考     char 和 varchar 固定长度 (char) 或可变长度 (varchar) 字符数据类型。  char[(n)]  长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。  varchar[(n)]  长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度，而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。  注释 如果没有在数据定义或变量声明语句中指定 n，则默认长度为 1。如果没有使用 CAST 函数指定 n，则默认长度为 30。  将为使用 char 或 varchar 的对象被指派数据库的默认排序规则，除非用 COLLATE 子句另外指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页。  支持多语言的站点应考虑使用 Unicode nchar 或 nvarchar 数据类型以尽量减少字符转换问题。如果使用 char 或 varchar：   如果希望列中的数据值大小接近一致，请使用 char。   如果希望列中的数据值大小显著不同，请使用 varchar。  如果执行 CREATE TABLE 或 ALTER TABLE 时 SET ANSI_PADDING 为 OFF，则一个定义为 NULL 的 char 列将被作为 varchar 处理。   当排序规则代码页使用双字节字符时，存储大小仍然为 n 个字节。根据字符串的不同，n 个字节的存储大小可能小于 n 个字符。   请参见  CAST 和 CONVERT  COLLATE  排序规则  数据类型转换  数据类型  sp_dbcmptlevel  指定排序规则  使用 char 和 varchar 数据  使用 Unicode 数据  ©1988-2000 Microsoft Corporation。保留所有权利。 [/quote] 还能给解释下是什么原因，为什么写不进去，你给的参考资料我感觉对我解决问题的帮助不是很大，谢谢了啊

user: user-1
content: 引用 2 楼 pan3633330 的回复:[quote=引用 1 楼 zhao4zhong1 的回复:] 先在查询分析器里面执行相应T-SQL语句成功后再在代码中使用。 insert into yw_test (xh,xm,xb,yx,ywcj,sxcj,yycj,zycj,hgbz,gxsj) vlaues('1234','李三','男','南京大学',94,93,92,91,'y','1990/2/12') 这个可以写进去 但是查询不到记录 这是为什么啊？[/quote]   Transact-SQL 参考     char 和 varchar 固定长度 (char) 或可变长度 (varchar) 字符数据类型。  char[(n)]  长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。  varchar[(n)]  长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度，而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。  注释 如果没有在数据定义或变量声明语句中指定 n，则默认长度为 1。如果没有使用 CAST 函数指定 n，则默认长度为 30。  将为使用 char 或 varchar 的对象被指派数据库的默认排序规则，除非用 COLLATE 子句另外指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页。  支持多语言的站点应考虑使用 Unicode nchar 或 nvarchar 数据类型以尽量减少字符转换问题。如果使用 char 或 varchar：   如果希望列中的数据值大小接近一致，请使用 char。   如果希望列中的数据值大小显著不同，请使用 varchar。  如果执行 CREATE TABLE 或 ALTER TABLE 时 SET ANSI_PADDING 为 OFF，则一个定义为 NULL 的 char 列将被作为 varchar 处理。   当排序规则代码页使用双字节字符时，存储大小仍然为 n 个字节。根据字符串的不同，n 个字节的存储大小可能小于 n 个字符。   请参见  CAST 和 CONVERT  COLLATE  排序规则  数据类型转换  数据类型  sp_dbcmptlevel  指定排序规则  使用 char 和 varchar 数据  使用 Unicode 数据  ©1988-2000 Microsoft Corporation。保留所有权利。

user: user-0
content: 引用 1 楼 zhao4zhong1 的回复:先在查询分析器里面执行相应T-SQL语句成功后再在代码中使用。 insert into yw_test (xh,xm,xb,yx,ywcj,sxcj,yycj,zycj,hgbz,gxsj) vlaues('1234','李三','男','南京大学',94,93,92,91,'y','1990/2/12') 这个可以写进去 但是查询不到记录 这是为什么啊？

user: user-1
content: 先在查询分析器里面执行相应T-SQL语句成功后再在代码中使用。
user-0 提问: 有理数 数据类型 C语言

回复:
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: 这代码风格、、、函数名全是中文， 变量名随便用，改错头疼，不如重写、、、 说几个问题，z和n没初始化就用了，报错， 不明白这是要做什么循环？？？ for(int i = t;i <= t;i--)