Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 类似于N皇后问题，菜鸟不知道错在哪，错的有点多

回复:
user: user-1
content: “给定一个小点的输入，完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门！ 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出

user: user-1
content: 仅供参考#include <stdio.h> int d[8][8]; int n; void queen8(int L) {     int x,y;      if (8==L) {         n++;         printf("%d\n",n);         for (y=0;y<8;y++) {             for (x=0;x<8;x++) { //              printf("%d",d[y][x]);                 if (d[y][x]) printf("■");                 else         printf("□");             }             printf("\n");         }         return;     }     for (x=0;x<8;x++) {         for (y=0;y<L;y++) {             if  (              d[y][x      ]              || (x-(L-y)>=0 && d[y][x-(L-y)])              || (x+(L-y)< 8 && d[y][x+(L-y)]))                 break;         }         if (y>=L) {             d[L][x]=1;             queen8(L+1);             d[L][x]=0;         }     } } int main() {     int y,x;     for (y=0;y<8;y++) {         for (x=0;x<8;x++) {             d[y][x]=0;         }     }     queen8(0);     return 0; }

user: user-2
content: 引用 2 楼 wangting627 的回复:int main(int a,int b)  这写法。。 你要不嫌不规范   就把a,b弄成全局变量 简单易懂不会错

user: user-2
content: int main(int a,int b)  这写法。。

user: user-3
content: 唉，帮都没法帮，错误提示说的这么明白了
user-0 提问: cs模式升级探测程序

回复:
user: user-1
content: 还要考虑异常，不要出现还没更新完，版本号已经改了的情况

user: user-1
content: 1. 获取版本号。这个就是存储和读取问题 2. socket通信

user: user-2
content: server端自己开个线程一段时间就检测一次阿，如果出现新的版本就通知客户端是否升级， 是的话，就升级呗

user: user-0
content: 文件读写都没问题 socket那块忘了怎么用了 有没有大神提供个例子参考下
user-0 提问: 急求 UNIX C fopen 277次，第277次fopen core dump，很奇怪！

回复:
user: user-1
content: 会不会是打开关闭太频繁，受不了了。

user: user-2
content: fp1 = fopen(); 打开的指针判断一下有效不有效。。。

user: user-3
content: fopen 失败时返回的 FILE *是 NULL，这时调用 fclose 会出现段错误。

user: user-0
content: 顶上去！
user-0 提问: 正弦信号C语言拓展，基于CORTEX-M3

回复:
user: user-0
content: 引用 11 楼 u012586257 的回复:可以啊，主循环里加键检测。不同键就乘不同的系数。可以保留这个内存里的数值表输出时用，另建一个常数表做原始数据。有键按下，则重新计算内存表数据。为了保证一定精度，可以改掉输出时的 <<6，你是16位DAC吧？要确认下计算后数据不会溢出 乘以不同系数之后，有的数值确实在示波器上不能正确的显示出来，16位的DAC可以在参数中存在负数么？为啥我改了负数示波器上显示时负数都被取反成正数了呢？最初的正弦波数据不是以0为基准的，所以乘以倍数后输出信号就错位了，前一段在一个水平线上，后一段则在另一个水平线上，我尝试参数以0为最初值，但那样就有负数了。。。。。。负数让我很纠结啊。。。。。。

user: user-1
content: 可以啊，主循环里加键检测。不同键就乘不同的系数。可以保留这个内存里的数值表输出时用，另建一个常数表做原始数据。有键按下，则重新计算内存表数据。为了保证一定精度，可以改掉输出时的 <<6，你是16位DAC吧？要确认下计算后数据不会溢出

user: user-0
content: 引用 7 楼 u012586257 的回复:参数中少了一个}，如果你没少，那可能是多了个；吧 你好，这个要是加上键盘控制怎么弄啊？按KEY1输出一组参数，按KEY2输出另一组参数，以此类推，，，， 为啥我自己整的总是不行呢，达不到自己想要的结果。大神帮帮忙啊！！！

user: user-0
content: 引用 2 楼 u012586257 的回复:想要不同幅值，在输出到DAC之前乘一个系数变换一下就好 你好，这个要是加上键盘控制怎么弄啊？按KEY1输出一组参数，按KEY2输出另一组参数，以此类推，，，， 为啥我自己整的总是不行呢，达不到自己想要的结果。大神帮帮忙啊！！！

user: user-0
content: 引用 1 楼 KenZhang1031 的回复:你把你失败的代码贴上来看看。 你好，这个要是加上键盘控制怎么弄啊？按KEY1输出一组参数，按KEY2输出另一组参数，以此类推，，，， 为啥我自己整的总是不行呢，达不到自己想要的结果。大神帮帮忙啊！！！

user: user-1
content: 参数中少了一个}，如果你没少，那可能是多了个；吧

user: user-2
content: 引用 5 楼 u014627978 的回复:[quote=引用 1 楼 KenZhang1031 的回复:] 你把你失败的代码贴上来看看。  错误程序的代码里参数太多了，我整了300个，然后把volatile uint16_t GusSinTable[45] 改成了volatile uint16_t GusSinTable[300]， 最后面的 for (i = 0; i < 45; i++)  改成了  for (i = 0; i < 300; i++),  300个参数里就是有大于1000的四位数，其它就没啥了。调试时总提示说在参数中少一个“}”，我就不明白了~~~谢谢[/quote]按你描述看，没问题

user: user-0
content: 引用 1 楼 KenZhang1031 的回复:你把你失败的代码贴上来看看。  错误程序的代码里参数太多了，我整了300个，然后把volatile uint16_t GusSinTable[45] 改成了volatile uint16_t GusSinTable[300]， 最后面的 for (i = 0; i < 45; i++)  改成了  for (i = 0; i < 300; i++),  300个参数里就是有大于1000的四位数，其它就没啥了。调试时总提示说在参数中少一个“}”，我就不明白了~~~谢谢

user: user-0
content: 引用 2 楼 u012586257 的回复:想要不同幅值，在输出到DAC之前乘一个系数变换一下就好   方法挺好，可是我这个新手不知道怎么在输出之前变换系数啊，，，，，其实我主要是想输出 f(t)=(t-a)^2*exp[-2(t-a)/65]sin(0.2*pi*t),,,a<t<65+a,这样一个信号。，，，，，，，，谢谢

user: user-0
content: 错误程序的代码里参数太多了，我整了300个，然后把volatile uint16_t GusSinTable[45] 改成了volatile uint16_t GusSinTable[300]， 最后面的 for (i = 0; i < 45; i++)  改成了  for (i = 0; i < 300; i++),  300个参数里就是有大于1000的四位数，其它就没啥了。调试时总提示说在参数中少一个“}”，我就不明白了~~~

user: user-1
content: 想要不同幅值，在输出到DAC之前乘一个系数变换一下就好

user: user-2
content: 你把你失败的代码贴上来看看。
user-0 提问: C基础题

回复:
user: user-1
content: 楼上的，谁告诉你们楼主的意思是用printf输出3位小数了……

user: user-2
content: 格式控制字符串修改一下就行了。

user: user-3
content: 其实这个问题不简单。。扩充一下就是二进制整形表示除法操作 如何实现小数点后的精确取位

user: user-4

user: user-5
content: //Round(1.234,2) = 1.23 //Round(1.234,0) = 1.0 //Round(123.4,-1) = 120.0 double Round(double dVal, short iPlaces) {     double dRetval;     double dMod = 0.0000001;     if (dVal<0.0) dMod=-0.0000001;     dRetval=dVal;     dRetval+=(5.0/pow(10.0,iPlaces+1.0));     dRetval*=pow(10.0,iPlaces);     dRetval=floor(dRetval+dMod);     dRetval/=pow(10.0,iPlaces);     return(dRetval); }  double round(double dVal, short iPlaces) //iPlaces>=0 {     unsigned char s[20];     double dRetval;      sprintf(s,"%.*lf",iPlaces,dVal);     sscanf(s,"%lf",&dRetval);     return (dRetval); }

user: user-6
content: 不错，是这个样子的。。。

user: user-7
content: 这个是保留两位小数的例子，可以自己扩展一下： If you just want to round the number for output purposes, then the "%.2f" format string is indeed the correct answer. However, if you actually want to round the floating point value for further computation, something like the following works:  #include <math.h>  float val = 37.777779;  float rounded_down = floorf(val * 100) / 100;   /* Result: 37.77 */ float nearest = floorf(val * 100 + 0.5) / 100;  /* Result: 37.78 */ float rounded_up = ceilf(val * 100) / 100;      /* Result: 37.78 */ Notice that there are three different rounding rules you might want to choose: round down (ie, truncate after two decimal places), rounded to nearest, and round up. Usually, you want round to nearest.  As several others have pointed out, due to the quirks of floating point representation, these rounded values may not be exactly the "obvious" decimal values, but they will be very very close.  For much (much!) more information on rounding, and especially on tie-breaking rules for rounding to nearest, see the Wikipedia article on Rounding： http://en.wikipedia.org/wiki/Rounding

user: user-8
content: printf("%.3f",a/b);

user: user-9
content: 前面所有楼的答案都是输出结果的前三位小数，不是结果保留三位小数。

user: user-10
content: 这么基本的问题多看教材把

user: user-11
content: 引用 6 楼 u013163178 的回复:scanf("%d %d",&a,&b); printf("%3f",a/b); 正解。 不过最好判断下b!=0

user: user-12
content: scanf("%d %d",&a,&b); printf("%3f",a/b);

user: user-5
content: 作为一个C程序员，对  scanf,sscanf,fscanf  printf,sprintf,fprintf 这类函数的用法，还是要做到“拳不离手，曲不离口”的。

user: user-13
content: printf("%.3f", ...);

user: user-14
content: 答案： printf("%.3f", a/b);  %f是输出float类型的方法，在前面加“.”再加一个数字，表示小数点后保留的位数。

user: user-15
content: 我去。。。  float a,b; scanf("%f %f",&a,&b); printf("%.3f",a/b);

user: user-16
content: .3f，格式控制里。。。
user-0 提问: 函数能否返回(*)[4]这样的指针

回复:
user: user-1
content: #include<stdio.h> //给每个成员的值都+1 int (*fun(int (*ptr)[4]))[4] {     int i;     int (*p)[4];     p= ptr;     for(i =0; i<4; i++)         (*p[i])++;     return p; } int main(void) {     int a[4] ={2,5,3,6};     printf("%d\n",**fun(&a));      return 0; }  上面这段代码就返回了一个(*)[4]类型的指针，请注意函数原型是如何声明的！

user: user-1
content: 这样的语句也是合法的 return (int *)100;

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对应的汇编并单步执行观察相应内存和寄存器变化。）  想要从本质上理解C指针，必须学习汇编以及C和汇编的对应关系。 从汇编的角度理解和学习C语言的指针，原本看似复杂的东西就会变得非常简单！ 指针即地址。“地址又是啥？”“只能从汇编语言和计算机组成原理的角度去解释了。” 但我又不得不承认：  有那么些人喜欢或者适合用“先具体再抽象”的方法学习和理解复杂事物；  而另一些人喜欢或者适合用“先抽象再具体”的方法学习和理解复杂事物。 而我本人属前者。  不要企图依赖输出指针相关表达式的值【比如printf("%p\n",...)】来理解指针的本质， 而要依赖调试时的反汇编窗口中的C/C++代码【比如void *p=...】及其对应汇编指令以及内存窗口中的内存地址和内存值来理解指针的本质。  这辈子不看内存地址和内存值；只画链表、指针示意图，画堆栈示意图，画各种示意图，甚至自己没画过而只看过书上的图……能从本质上理解指针、理解函数参数传递吗？本人深表怀疑！ 这辈子不种麦不收麦不将麦粒拿去磨面；只吃馒头、吃面条、吃面包、……甚至从没看过别人怎么蒸馒头，压面条，烤面包，……能从本质上理解面粉、理解面食吗？本人深表怀疑！！  提醒： “学习用汇编语言写程序” 和 “VC调试(TC或BC用TD调试)时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 （Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。） 想要从本质上理解C指针，必须学习C和汇编的对应关系。” 不是一回事！  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！  有人说一套做一套，你相信他说的还是相信他做的？ 其实严格来说这个世界上古往今来所有人都是说一套做一套，不是吗？  不要写连自己也预测不了结果的代码！  电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……  十字链表交换任意两个节点C源代码（C指针应用终极挑战）http://download.csdn.net/detail/zhao4zhong1/5532495 //char (*(*x[3])())[5];//x是什么类型的变量? // //分析C语言声明，关键是搞清楚这个变量是个什么东西（函数、指针、数组）， //是函数那么剩下的就是他的参数和返回值， //是指针那剩下部分是说明他指向什么， //是数组剩下的部分就是说明数组的成员是什么类型。 //解析C语言声明规则： //从左侧第一个标识符开始，按照优先级进行结合。*表示是..的指针，const表示只读的，volatile表示可变的，[]表示是数组，()表示是函数。 // //x和[3]结合说明是一个大小为3的数组，该数组指向了一个指针，该指针指向一个函数，该函数的无参数，返回一个指针，该指针指向一个大小为5的char型数组 #include <stdio.h> #include <typeinfo.h> char num[5]; char (*x00())[5] {     return # } int main() {     char (*x000)[5];//返回值     char (*(x00)())[5];//函数原型，参数为空，返回值为指针     char (*(*x0)())[5];//数组的元素，是个函数指针     char (*(*x[3])())[5];//是个数组，大小为3      x0 = x00;     x[0] = x0;     x[1] = x0;     x[2] = x0;     printf("typeid(x).name() is %s\n",typeid(x).name());     return 0; } //typeid(x).name() is char (* (__cdecl**)(void))[5]

user: user-3
content: char (*func())[4]

user: user-4
content: 你可以返回一个任意类型的指地, 然后 强制转换即可.

user: user-5
content: 可以，返回的指针只是一个地址，具体还是取决于你怎么用它。不过返回来后，是个二级指针吧

user: user-1
content: 你甚至可写下面的语句 （int *）100
user-0 提问: 如何在apache代码中添加一个函数来处理表单信息

回复:
user: user-0
content: 自己在顶一下。

user: user-1
content: 楼主可能需要的cgi程序，google下看怎么写，编译成executable文件放到apache相应的目录下。 PS：都写好页面了，页面所用语言不可以处理这个吗？

user: user-2
content: 发错版块了吧，另外我很惊奇这是怎么做到的？
user-0 提问: 阻塞套接字和非阻塞套接字的奇怪问题，大侠进。

回复:
user: user-1
content: 引用 6 楼 zyb522 的回复:首先非常感谢各位的回复，但是请大家看好帖子的内容啊，我搞socket这块有一段时间了，对EAGAIN等errno的处理等等早就明白了，现在的问题是，问什么连接同一个server，可以从阻塞的套接字接收到数据，而非阻塞的就一直返回-1, errno == EAGAIN，我只是接收几个字符串。 说明server端没有数据可读。

user: user-0
content: 首先非常感谢各位的回复，但是请大家看好帖子的内容啊，我搞socket这块有一段时间了，对EAGAIN等errno的处理等等早就明白了，现在的问题是，问什么连接同一个server，可以从阻塞的套接字接收到数据，而非阻塞的就一直返回-1, errno == EAGAIN，我只是接收几个字符串。

user: user-2
content: http://bbs.csdn.net/topics/390374955 参考MSDN98\SAMPLES\VC98\SDK\NETDS\WINSOCK\SIMPLE\*.*

user: user-3
content: 非阻塞我个人感觉是不是应该去check errno != EAGAIN的情况呢 我不太清楚

user: user-0
content: 引用 1 楼 max_min_ 的回复:在非阻塞模式下 返回EAGAIN是正常情况的！没有可读数据而已！继续recv就好！  我就是继续recv的  我把recv放到while（1）当中recv的，只要是EAGAIN，就直接continue ，

user: user-0
content: 我这问题难道太简单了，大侠都不屑？？？

user: user-1
content: 在非阻塞模式下 返回EAGAIN是正常情况的！没有可读数据而已！继续recv就好！
user-0 提问: C语言的问题

回复:
user: user-1
content: c/s模式啊

user: user-2
content: 服务:Messenger 描述:传输客户端和服务器之间的 NET SEND 和 警报器服务消息。此服务与 Windows Messenger 无关。如果服务停止，警报器消息不会被传输。如果服务被禁用，任何直接依赖于此服务的服务将无法启动。

user: user-3
content: 通信。。。。

user: user-4
content: 我前段时间刚好做过这么一个小项目。因为这个涉及的代码也不算少所以就不贴了 给你一个思路，然后自己去一步步学。  我是这样的，首先使用MFC制作一个发送简单界面----->使用网络编程知识使得两台主机可以连接，相互发送信息----->再制造一个接受信息的界面，简单的实现你要的功能就是，当接收到信息就使用MessageBox，弹出一个窗口就行了。很简单的。

user: user-5
content: netsend

user: user-6
content: 引用 楼主 u014616839 的回复:各位大神，在局域网里如何实现用A电脑给B电脑发出指令后，B电脑自动弹窗提醒。  这就涉及到你具体的运行平台了吧！windows || Linux || Other 不同平台下的消息处理的API应该不一样吧 如果是Windows下，那先了解网络编程，然后知道需要给系统发送一个什么样的消息能让系统自动弹出一个对话框（ShowWindow？？！！） 还是自己一步一步学吧
user-0 提问: LINUX 下  JNI C++ 第三方动态链接库so 编译的问题

回复:
user: user-1
content: 楼主这个问题解决了么，我也遇到这个问题了。

user: user-0
content: 引用 9 楼 buyong 的回复:http://baike.baidu.com/link?url=miZhS63xkMQgqq-7A5WGvjcaCnxq-R4ZJTS0M7tXnXyv4lqly73D-Vqz4B0Xcz25Iwkf2oVpDpCPn3D8phiYFa  这是基本的，我需要咨询的是，可能是我在编译的时候，尤其是依赖关系上，哪个参数没有些对造成的。 首先对自己编写的Hello.cpp编译成so g++  -fPIC -D_REENTRANT -I/usr/jdk1.8/include -I/usr/jdk1.8/include/linux -c Hello.cpp g++  -shared Hello.o -o libHello.so   然后因为Hello.cpp调用了第三方库，所以进行了以下关联。 g++ Hello.cpp -fPIC -shared -L. -lVerifyResult  我这么编译为什么总是提示我 ‘_InitInfo’在此作用域中尚未声明  其中 VerifyResult是第三方库,_InitInfo是第三方库提供的对外接口 Hello.cpp是我自己编写的C++程序，内容是调用 libVerifyResult.so 中提供的函数  另外，我已经将libVerifyResult.so放到了当前目录，并且在/usr/lib下也放置了。

user: user-2
content: http://baike.baidu.com/link?url=miZhS63xkMQgqq-7A5WGvjcaCnxq-R4ZJTS0M7tXnXyv4lqly73D-Vqz4B0Xcz25Iwkf2oVpDpCPn3D8phiYFa

user: user-3
content: 在cpp文件里include头文件，然后使用dlopen试试吧

user: user-0
content: 不能解决的话，今天准备结贴了。

user: user-4
content: 帮忙顶一个下

user: user-0
content: 今天最后一顶

user: user-0
content: 引用 4 楼 OExpress 的回复:system.load(libxxx.so);  我单独百年些CPP成寻，调用这个库，是没有问题的，而且直接可以用，也不需要什么load,open之类的，现在我是 要通过JNI方式调用，现在就是不知到编译的时候，依赖关系怎么写。查了下，也实验了。就是不行

user: user-5
content: system.load(libxxx.so);

user: user-0
content: 关键的问题是，我如何与第三方提供的SO建立关联。

user: user-0
content: 引用 1 楼 thefirstz 的回复:使用nm命令看看libHello.so里面的符号是不是对 先确保带有main函数的Hello.cpp可以调用第三方库  是这样的，我通过C++程序直接调用SO，是没问题的，现在我需要在写个C++程序，但是要符合JNI规范，目的上让JAVA调用。  我觉得我是编译哪里有了问题。

user: user-3
content: 使用nm命令看看libHello.so里面的符号是不是对 先确保带有main函数的Hello.cpp可以调用第三方库
user-0 提问: 在设计计算机图形学演示系统时，运行出现- 黑屏 direct draw init failed（00000000）！

回复:
user: user-0
content: 引用 1 楼 N_sev7 的回复:推荐个网址，可以去认真看看，都是英文，我实在看不下去了 http://forum-en.msi.com/index.php?topic=17211.0  谢谢大神啦！我去看看

user: user-1
content: 用了什么第三方库。 用的是dx几？  初步怀疑用的东西太老你的显卡不支持导致dx初始化错误。

user: user-2
content: 推荐个网址，可以去认真看看，都是英文，我实在看不下去了 http://forum-en.msi.com/index.php?topic=17211.0
user-0 提问: C语言遍历文件，怎么子文件夹也被打印出来了？

回复:
user: user-1
content: _A_SUBDIR==filefind.attrib  wrong!  _A_SUBDIR==(filefind.attrib & _A_SUBDIR)

user: user-2
content: system("dir /b /a-d c:\\*.* >d:\\allfiles.txt"); //读文件d:\\allfiles.txt的内容即C:\\下所有文件的名字 system("dir /b /a-d /s c:\\*.* >d:\\allfilesinsub.txt"); //读文件d:\\allfilesinsub.txt的内容即C:\\下所有文件的名字包含子目录 system("dir /b /ad  c:\\*.* >d:\\alldirs.txt"); //读文件d:\\alldirs.txt的内容即C:\\下所有子目录的名字 请记住，能用shell命令获取文件、文件夹信息或者操作文件、文件夹最好用shell命令获取或者操作，而不要用各种API获取或者操作，因为当遇到非法文件夹名或非法文件名或非法文件长度、非法文件日期、压缩文件、链接文件、稀疏文件……等各种意料之外的情况时，API会处理的不全面或陷入死循环，而shell命令不会。

user: user-3
content: 可以是你判断文件夹的访问有问题 在 if(_A_SUBDIR==filefind.attrib) 这里下断点, 看是目录是这个条件是否进入就知道了

user: user-4
content: #include <vector> #include <algorithm> #include <stdio.h> #include <string> #include <string.h> #include <io.h> #include <windows.h> using namespace std; //////////////////////////////////////////// void string_replace(string & strBig, const string & strsrc, const string &strdst) {     string::size_type pos=0;     string::size_type srclen=strsrc.size();     string::size_type dstlen=strdst.size();     while( (pos=strBig.find(strsrc, pos)) != string::npos)     {         strBig.replace(pos, srclen, strdst);         pos += dstlen;     } } //////////////////////////////////////////// void filesearch(string path) {     string s;     ///////////////////////////////////////////     struct _finddata_t filefind;     string curr=path+"\\*.*";     int done =0,handle;     if(!(handle=_findfirst(curr.c_str(),&filefind)))     {         return ;     }     while(!(done=_findnext(handle,&filefind)))     {         if(strcmp(filefind.name,"..")==0)         {             continue;         }         if(_A_SUBDIR==filefind.attrib)    ///你这都判断了，如果是子目录，就打印，所以为啥不打印呢？？？         {             curr=path+"\\"+filefind.name;             filesearch(curr);             continue;         }         s=curr;         string_replace(s,"*.*",filefind.name);         FILE *fp;         fp=fopen("1.txt","a+");         fprintf(fp,"%s\n",s.c_str());         fclose(fp);     }     _findclose(handle); }   int main() {     FILE *f;     f=fopen("1.txt","w");     fclose(f);     filesearch("f:");     system("start 1.txt");     return 0; }
user-0 提问: 菜鸟求助，一个关于scanf和缓冲区的问题

回复:
user: user-1
content: #include <stdio.h> int main() {     int num,r;     char c;     while (1) {         printf("Enter a number:");         fflush(stdout);         rewind(stdin);         r=scanf("%d%c", &num,&c);         if (r==2) {             if ('\n'==c) break;         }         printf("Format error!\n");     }     printf("%d entered.",num);     return 0; } //Enter a number:a //Format error! //Enter a number:10a //Format error! //Enter a number:10 //10 entered. //

user: user-2
content: 你输入字母b后，那么缓冲区就有了这个字符b。scanf函数发现缓冲区有东西了，就去读取。但发现是一个字符b，而自己需要的是数字。那么scanf就返回了，但它只是返回，并不把这个b清除。所以字符b还是留在缓冲区。所以当再次回到循环判断语句时，scanf又会去读取这个字符b。又出错。一直循环下去。 你可以在printf语句下面加多一句fflush(stdin);把缓冲区的东西清除掉，就能正常工作了。
user-0 提问: 新手问个linux c问题,求指教,谢谢了

回复:
user: user-0
content: 好吧,懂了,就是我想的那样

user: user-1
content: man 2 signal

user: user-0
content: 是不是调用了signal之后,那个被注册的信号就被阻塞了?
user-0 提问: 精通c语言之路，有哪些可推荐的书籍或方法？（大神们快来）

回复:
user: user-1
content: 初学者建议看：《C语言程序设计-现代方法》，裘宗燕的C语言程序设计的书，C++之父《程序语言设计与实践》 进阶的话 《C++沉思录》 《C陷阱与缺陷》 《C专家编程》  还是强烈建议学完汇编再学C语言，效果极佳 。。。分数拿来。。。

user: user-2
content: 重要多敲代码，多看书。

user: user-3
content: <c程序设计语言>

user: user-4
content: 多写代码

user: user-5
content: 引用 楼主 u014598100 的回复:新建了一个小号，给贴100分 如果只是为了考试，或者能看懂c代码，含C的那几本书都可以看，如果考C吃饭，语法通达只是基本

user: user-6
content: 主要推荐下面的书籍，不必全部看，都是好书 初级级别：《c primer plus》这本书是C语言入门书籍，讲的比较详细，里面也有很多代码，可以跟着代码练习。 入门级别：《c 和指针》和《C程序设计语言》（K&R版本），《征服C指针》《C点滴》需要大量的代码练习，看书是学不会变成 进阶级别：《C陷阱与缺陷》，《C语言深度解剖》，《C专家编程》，回头看《C程序设计语言》。 剩下的就是数据结构和算法的学习了

user: user-7
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对应的汇编并单步执行观察相应内存和寄存器变化。）  想要从本质上理解C指针，必须学习汇编以及C和汇编的对应关系。 从汇编的角度理解和学习C语言的指针，原本看似复杂的东西就会变得非常简单！ 指针即地址。“地址又是啥？”“只能从汇编语言和计算机组成原理的角度去解释了。” 但我又不得不承认：  有那么些人喜欢或者适合用“先具体再抽象”的方法学习和理解复杂事物；  而另一些人喜欢或者适合用“先抽象再具体”的方法学习和理解复杂事物。 而我本人属前者。  不要企图依赖输出指针相关表达式的值【比如printf("%p\n",...)】来理解指针的本质， 而要依赖调试时的反汇编窗口中的C/C++代码【比如void *p=...】及其对应汇编指令以及内存窗口中的内存地址和内存值来理解指针的本质。  这辈子不看内存地址和内存值；只画链表、指针示意图，画堆栈示意图，画各种示意图，甚至自己没画过而只看过书上的图……能从本质上理解指针、理解函数参数传递吗？本人深表怀疑！ 这辈子不种麦不收麦不将麦粒拿去磨面；只吃馒头、吃面条、吃面包、……甚至从没看过别人怎么蒸馒头，压面条，烤面包，……能从本质上理解面粉、理解面食吗？本人深表怀疑！！  提醒： “学习用汇编语言写程序” 和 “VC调试(TC或BC用TD调试)时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化，这样过一遍不就啥都明白了吗。 （Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。） 想要从本质上理解C指针，必须学习C和汇编的对应关系。” 不是一回事！  不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！  有人说一套做一套，你相信他说的还是相信他做的？ 其实严格来说这个世界上古往今来所有人都是说一套做一套，不是吗？  不要写连自己也预测不了结果的代码！  电脑内存或文件内容只是一个一维二进制字节数组及其对应的二进制地址； 人脑才将电脑内存或文件内容中的这个一维二进制字节数组及其对应的二进制地址的某些部分看成是整数、有符号数/无符号数、浮点数、复数、英文字母、阿拉伯数字、中文/韩文/法文……字符/字符串、汇编指令、函数、函数参数、堆、栈、数组、指针、数组指针、指针数组、数组的数组、指针的指针、二维数组、字符点阵、字符笔画的坐标、黑白二值图片、灰度图片、彩色图片、录音、视频、指纹信息、身份证信息……  十字链表交换任意两个节点C源代码（C指针应用终极挑战）http://download.csdn.net/detail/zhao4zhong1/5532495

user: user-8
content: 《C语言课程设计案例精编》 《C语言点滴》

user: user-9
content: 不看C的标准文档，只看别的书，就好比围着故宫打转转，根本无法深入内部，也好比隔靴骚痒。

user: user-10
content: http://bbs.csdn.net/topics/390638386 去年总结的帖子，看看吧！

user: user-11
content: 《C和指针》

user: user-12
content: c语言程序设计

user: user-13
content: 经典的巨作就不说了，像一楼说的那些书（除了《c陷阱和缺陷》和《c专家编程》以及正在看的《算法导论》以外，其他的都没读过还，被《设计模式》课程的老师吓唬的（据他说，《C++程序设计》谭浩强版里面关于继承派生的基本上都是错的，而我大一时候唯一学好的一门课就是谭浩强版《C++程序设计》，登时，有种觉得自己错的一塌糊涂的感觉，因此，以后的编程中，C++少了个尾巴，成了C！！），觉得自己一点点的都不懂什么时候OO思想，所以，C++的书籍目前读的不多）  刚吃完晚饭，废话那么多有助消化一哈  推荐一本知名度不是很高的，但是本人觉得还不错的书 《C语言深度解剖》作    者：陈正冲  很多地方作者都用了现实的比喻，让人更好理解。我觉得一本好的书，能把一些知识点结合现实现象来讲是最好的！ 不过我读的时候这不是一本书，只是在网上散播的试读本，不知道现在第二版怎么样了。 书里面将的知识点不算全，但是绝对算是最常用的，理解C语言（不是C++）基本特性差不多够了

user: user-14
content: crazy coding

user: user-15
content: 看完K&R的那本《C程序设计语言》 看《C陷阱与缺陷》《C/C++高质量编程》《C专家编程》  看C标准库的实现  多写代码
user-0 提问: 请教大家C语言库连接的问题

回复:
user: user-0
content: 引用 6 楼 dbzhang800 的回复:GCC 的C标准库是 libc.so，math.h对应的在 libm.so  MSVC的C标准库是 MSVCRT.dll MSVCR20.dll/MSVCR71.dll/...  MinGW 使用 MSVCRT.dll 貌似使用的system32里的msvcrt.dll？是嘛？ 或者我看到了应该是libcrtdll.a？这个文件？

user: user-1
content: MinGW使用的 MSVCRT.dll ，是MSVC4.2~MSVC6.0的C运行库，你需要去系统目录中寻找。

user: user-0
content: 引用 6 楼 dbzhang800 的回复:GCC 的C标准库是 libc.so，math.h对应的在 libm.so  MSVC的C标准库是 MSVCRT.dll MSVCR20.dll/MSVCR71.dll/...  MinGW 使用 MSVCRT.dll 没有看到你所说的.so和.dll,在MINGW的lib文件夹里只看到一些.o和.a?

user: user-2
content: 参考gcc相关源代码。 《编译原理》 《程序员的自我修养——链接、装载与库》 《Windows PE权威指南》

user: user-1
content: GCC 的C标准库是 libc.so，math.h对应的在 libm.so  MSVC的C标准库是 MSVCRT.dll MSVCR20.dll/MSVCR71.dll/...  MinGW 使用 MSVCRT.dll

user: user-0
content: 引用 4 楼 sdu_sky 的回复:#include <stdio.h> 头文件只是用来声明，提供编译的时候使用，而链接器会去标准库查找目标文件进行连接。 目标文件在哪儿呢？C语言的目标文件时什么样子的呢？.o吗？还是？

user: user-3
content: #include <stdio.h> 头文件只是用来声明，提供编译的时候使用，而链接器会去标准库查找目标文件进行连接。

user: user-0
content: 顶啊。C语言库如何连接？自己该怎么写C库？

user: user-0
content: 引用 1 楼 jerry_dqh 的回复:头文件中只是一个声明，标准C库自动链接的。 那标准C库的二进制码在什么地方呢？表示疑惑。

user: user-4
content: 头文件中只是一个声明，标准C库自动链接的。
user-0 提问: 求教：麻烦各位牛人给我看看我的程序为什么不能不正确的路径吧（可能是while循环）。多谢。

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

user: user-2
content: 问题就看不懂。代码注意用C格式，否则很少人看的
user-0 提问: 求教。。。我想建立一个动态的单链表，两次输入分别确定元素的个数个元素中一个成员的值，然后再主函数中调用并输出单链表。。。但是我写的这个怎么不对。。

回复:
user: user-0
content: 多谢

user: user-1
content: #include <stdio.h> #include <malloc.h>  #define null 0  typedef struct Lnode { 	int data; 	struct Lnode *next; }Linklist;  Linklist *create() { 	Linklist *h = NULL; 	Linklist *p = NULL; 	Linklist *s = NULL; 	int i,n; 	printf("请输入链表元素的个数"); 	scanf("%d",&n);    //////  ERR 1 	h=(Linklist *)malloc(sizeof(Linklist)); 	s=h; 	for(i=0;i < n;)   //ERR 2 	{ 		if (i > 0) 		{ 			h->next = (Linklist *)malloc(sizeof(Linklist)); 			h = h->next; 		} 		p=(Linklist *)malloc(sizeof(Linklist)); 		printf("请输入数据的值"); 		scanf("%d",&p->data); 		h->data = p->data; 		h->next = null; 		++i; 	} 	return s; } main() { 	Linklist *q; 	q=create(); 	while(q != null)  ///ERR 3 	{ 		printf("%d\n",q->data); 		q=q->next; 	} }
user-0 提问: 我想利用时钟写个无限弹窗的程序，可是他会自动停止，不知道为什么会出现这个问题，不知道这么解决

回复:
user: user-1
content: 检查是否资源泄漏的办法之一： 在任务管理器 进程 查看 选择列 里面选择：内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍，越多越好，比如1000000次甚至无限循环，记录以上各数值，再隔至少一小时，越长越好，比如一个月，再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加，则铁定有对应资源的资源泄漏！

user: user-2
content: 资源耗尽了，亲

user: user-3
content: 引用 楼主 u012211232 的回复: void CALLBACK tanchuang(HWND hwnd,UINT Message,UINT ITimerID,DWORD dwTime) {      SYSTEMTIME stLocal; 	 GetLocalTime(&stLocal); 	 TCHAR strTime[256]; 	 wsprintf(strTime,"%i年%i月%i日 %i:%i:%i",stLocal.wYear,stLocal.wMonth,stLocal.wDay,stLocal.wHour,stLocal.wMinute,stLocal.wSecond); 	 SetDlgItemText(hwnd,IDC_EDIT1,strTime); 	 MessageBox(hwnd,TEXT("haha"),TEXT(""),MB_OK); 	 MessageBox(hwnd,TEXT("haha"),TEXT(""),MB_OK); }   BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) { 	SetTimer(hwnd,0,1000,tanchuang);      return TRUE; }  你弹出的是模式对话框，等着你输入呢？这不就停止了嘛

user: user-4
content: 应该是 1.Windows的一种系统自我保护机制或者 2.缺少可分配资源的问题 3.亦或者是每个应用程序所能运行的实例的个数是有限制的  觉得第三种可能性大一些，  记得又一次，我无聊就按住Win+E不放 过了一段时间久不在弹出对话框了
user-0 提问: 数据结构c 版视频谁讲的通俗易懂啊

回复:
user: user-1
content: 《大话数据结构》这本书不错啊

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

user: user-3
content: 我了解的不多，不过我正在看郝斌的数据结构，当初看他的C语言感觉不错，所以现在看他的数据结构，这儿有——http://pan.baidu.com/share/link?shareid=150626133&uk=1647511849#dir/path=%2F%E9%83%9D%E6%96%8C%20%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84

user: user-4
content: 郝斌的视频可以简单的入个门，讲得浅显通俗易懂，但是想提升的话，还是多看书吧。。

user: user-5
content: 严蔚敏。配书看。

user: user-6
content: 最好有实践，其实 严蔚敏奶奶的那一套是一直都经典
user-0 提问: DrawText函数的使用

回复:
user: user-1
content: 建议楼主亲自阅读include\tchar.h的内容。

user: user-2
content: “DrawTextW”: 不能将参数 2 从“const char [6]”转换为“LPCWSTR”  这还叫没有错啊.  在VS中编程, 只要用到字符串的地方, 尽量用 _T("")或者TEXT("")包起来.   等你能正确区分环境与串相的参数的填写了, 也可以不用这么写了.  DrawText(hdc,TEXT("hello windows api"), -1, &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);

user: user-3
content: 看看你的hdc有没有问题啊，int DrawText(   HDC hDC,          // handle to DC   LPCTSTR lpString, // text to draw   int nCount,       // text length   LPRECT lpRect,    // formatting dimensions   UINT uFormat      // text-drawing options ); 该函数本质跟画图一样

user: user-3
content: SetDlgItemText()更好用啊

user: user-4
content: LPCWSTR 说明你用的是Unicode，使用_T("hello world")

user: user-5
content: TEXT("Hello")
user-0 提问: 关于printf 输出问题

回复:
user: user-0
content: 引用 7 楼 zyaiwx 的回复:默认输出缓冲区放不下很多行的。参考赵老师与我所说。 恩，谢了

user: user-0
content: 引用 6 楼 zhao4zhong1 的回复:内容在cmd窗口设定的缓冲行数内放不下，卷到上面去了。  在cmd窗口左上角的图标上点鼠标右键，属性、布局、屏幕缓冲区大小，高度：9999太感谢了~~~~~明白了

user: user-1
content: 默认输出缓冲区放不下很多行的。参考赵老师与我所说。

user: user-2
content: 内容在cmd窗口设定的缓冲行数内放不下，卷到上面去了。  在cmd窗口左上角的图标上点鼠标右键，属性、布局、屏幕缓冲区大小，高度：9999

user: user-0
content: 引用 1 楼 zyaiwx 的回复:应该是因为，你加了%5d后，你的行数大于了控制台的最大行数，所以你最头上819 估计是其中的一部分 行数问题应该不是吧，比如用死循环输出数据，控制台那一直在输出，行数应该比我这个多吧，那时候数据都没出现数据的错误

user: user-0
content: 额，抱歉那是还没运行，不过我调试的时候，变量值是正确的，输出时结果不正确

user: user-0
content: 引用 2 楼 user-3 的回复:设断点，调试，查看变量的值 用了宽度，我调试的时候，fp指针错误。。。不知道怎么回事

user: user-3
content: 设断点，调试，查看变量的值

user: user-1
content: 应该是因为，你加了%5d后，你的行数大于了控制台的最大行数，所以你最头上819 估计是其中的一部分
user-0 提问: 关于文件读写请提供一些思路吧，大神

回复:
user: user-1
content: 难者不会，会者不难： #pragma comment(lib,"ole32") #include <stdio.h> #include <objbase.h> GUID guid; char OPID[8]; char EMMCSN[11]; char fn[15]; unsigned char *p; FILE *f; int main() {     CoCreateGuid(&guid);     p=(unsigned char *)&guid;     sprintf(OPID,"%02X%02X%02X%X",p[0],p[1],p[2],p[3]&0x0F);     sprintf(EMMCSN,"%02X%02X%02X%02X%02X",p[4],p[5],p[6],p[7],p[8]);     sprintf(fn,"%s.txt",EMMCSN);     f=fopen(fn,"w");     if (NULL==f) {         printf("Can not create file %s!\n",fn);         return 1;     }     fprintf(f,"OPID=%s\n",OPID);     fprintf(f,"EMMCSN=%s\n",EMMCSN);     fclose(f);     printf("%s created.\n",fn);     return 0; }

user: user-2
content: windows API: WritePrivateProfileString

user: user-2
content: printf("%s%d","OPID=", int_opid_var);

user: user-3
content: sprintf...

user: user-0
content: 引用 3 楼 buyong 的回复:printf("%s%d","OPID=", int_opid_var); 引用 3 楼 buyong 的回复:printf("%s%d","OPID=", int_opid_var); printf有这个命令？？

user: user-0
content: 引用 5 楼 zhao4zhong1 的回复:难者不会，会者不难： #pragma comment(lib,"ole32") #include <stdio.h> #include <objbase.h> GUID guid; char OPID[8]; char EMMCSN[11]; char fn[15]; unsigned char *p; FILE *f; int main() {     CoCreateGuid(&guid);     p=(unsigned char *)&guid;     sprintf(OPID,"%02X%02X%02X%X",p[0],p[1],p[2],p[3]&0x0F);     sprintf(EMMCSN,"%02X%02X%02X%02X%02X",p[4],p[5],p[6],p[7],p[8]);     sprintf(fn,"%s.txt",EMMCSN);     f=fopen(fn,"w");     if (NULL==f) {         printf("Can not create file %s!\n",fn);         return 1;     }     fprintf(f,"OPID=%s\n",OPID);     fprintf(f,"EMMCSN=%s\n",EMMCSN);     fclose(f);     printf("%s created.\n",fn);     return 0; }   引用 5 楼 zhao4zhong1 的回复:难者不会，会者不难： #pragma comment(lib,"ole32") #include <stdio.h> #include <objbase.h> GUID guid; char OPID[8]; char EMMCSN[11]; char fn[15]; unsigned char *p; FILE *f; int main() {     CoCreateGuid(&guid);     p=(unsigned char *)&guid;     sprintf(OPID,"%02X%02X%02X%X",p[0],p[1],p[2],p[3]&0x0F);     sprintf(EMMCSN,"%02X%02X%02X%02X%02X",p[4],p[5],p[6],p[7],p[8]);     sprintf(fn,"%s.txt",EMMCSN);     f=fopen(fn,"w");     if (NULL==f) {         printf("Can not create file %s!\n",fn);         return 1;     }     fprintf(f,"OPID=%s\n",OPID);     fprintf(f,"EMMCSN=%s\n",EMMCSN);     fclose(f);     printf("%s created.\n",fn);     return 0; }   感谢！你说的太对啦，我们还需要更努力呀，所以还要向前辈们多学学。谢谢，我再研究下

user: user-0
content: 引用 1 楼 u012586257 的回复:你的意思是你会写变量反而不会写常量？ 先定义两个字符串常量 ”OPID=“ 和“EMMCSN=”，创建文件后依次写不就行了么 我刚开始写程式，所以没好的思路，可能我的描述不太正确，所以采集一下大家的意见，谢谢

user: user-4
content: 你的意思是你会写变量反而不会写常量？ 先定义两个字符串常量 ”OPID=“ 和“EMMCSN=”，创建文件后依次写不就行了么
user-0 提问: 求教C C++中 如何给字符串设条件

回复:
user: user-1
content: 字符串不能直接== 需要借助额外的的一个一个字符的判断是否一致问题

user: user-2
content: C语言的话不能直接用==比较，而要用strcmp；如果是C++的话，在定义a是直接用String类型就可以了

user: user-3
content: 如果是c++ 的 string 类可以 因为重写了==  #include<stdio.h> #include <string.h> void main() { 	char a[30]; 	scanf("%s",a); 	if(strcmp(a,"Yes")==0||strcmp(a,"yes")==0) 		printf("welcome!"); 	else printf("end!\n"); }   如果是c++ #include <iostream> #include <string> using namespace  std;  void main() { 	string a; 	cin>>a; 	if(a=="yes"||a=="Yes") 		printf("welcome!"); 	else printf("end!\n"); }   楼主思路没错 概念欠缺一点...
user-0 提问: 直线倒立摆 C语言模糊控制算法

回复:
user: user-1
content: 这么专业性强的东西一般很少能遇到懂的吧 到百度上搜一下相关的论文看下吧 我搜了一下，感觉还是蛮多的 不过那么多都是数学计算！！！
user-0 提问: qt中怎样使用c语言编写成动态库？

回复:
user: user-1
content: 一、如何编写DLL，可以参考http://blog.csdn.net/n_sev7/article/details/19368431（图片无法显示，可以到QQ空间看：284941821） 二、Qt中如何调用DLL中的功能函数，可以参考网上的这篇        http://www.cnblogs.com/hicjiajia/archive/2010/08/27/1810239.html  注：其实我也没用过，只是帮你搜一下而已！更好的文章就等着你自己慢慢搜了
user-0 提问: 新手求助

回复:
user: user-1
content: for(i=0;i<10;i++) { if(a[i] =0) continue ; else printf("不全是0"); }

user: user-2
content: 引用 8 楼 u014539580 的回复:[quote=引用 2 楼 baichi4141 的回复:] 不能，只能一个元素一个元素比较 数量少的话直接写，数量多或者不定的话用循环  int F(int A[])     {         int i=0,j=0;         for(i=0;i<10;i++)         {             if(a[i]==0) j++;         }         if(j==10) return(1);         else return(0);     }大神帮忙看看，为什么会出现error C2601: 'F' : local function definitions are illegal这个错误[/quote]    你代码里面是不是没有主函数啊，还有F的形参是A[]，后面的数组写成a[]了

user: user-3
content: 用for循环吧，只能一个一个元素的判断

user: user-4
content: 不行！循环判断吧！

user: user-5
content: local 局部 function 函数 definitions 定义 are 是 illegal 非法的  不能在一个函数中定义另一个函数 不要求你精通英语，起码要会用字典

user: user-0
content: 引用 2 楼 baichi4141 的回复:不能，只能一个元素一个元素比较 数量少的话直接写，数量多或者不定的话用循环  int F(int A[])     {         int i=0,j=0;         for(i=0;i<10;i++)         {             if(a[i]==0) j++;         }         if(j==10) return(1);         else return(0);     }大神帮忙看看，为什么会出现error C2601: 'F' : local function definitions are illegal这个错误

user: user-0
content: 引用 6 楼 lzhui1987 的回复: #include<stdio.h> int main() {   int a[10]={};   for(int ix=0;ix<10;ix++)//遍历数组元素   {     if(a[ix]==0)           printf("a[%d]等于0\n",ix);   }     return 0; }   额  发错了上面的。。。。 正宗手打，只为得分。。。    int F(int A[])     {         int i=0,j=0;         for(i=0;i<10;i++)         {             if(a[i]==0) j++;         }         if(j==10) return(1);         else return(0);     }大神帮忙看看，为什么会出现error C2601: 'F' : local function definitions are illegal这个错误

user: user-2
content: #include<stdio.h> int main() {   int a[10]={};   for(int ix=0;ix<10;ix++)//遍历数组元素   {     if(a[ix]==0)           printf("a[%d]等于0\n",ix);   }     return 0; }   额  发错了上面的。。。。 正宗手打，只为得分。。。

user: user-2
content: #include<stdio.h> int main() {   int a[10]={};   for(int ix=0;ix<10;ix++)//遍历数组元素   {     if(a[ix]==0)           printf("a[%d]等于0\n",ix);   }  正宗手打，只为得分。。。   return 0; }

user: user-6
content: 你如果这样写a[10],那只是进行了一个元素的判断，而却你这个元素还是越界的

user: user-7
content: 你需要对每个元素逐个判断，通过循环实现。只要找到一个非零，那么这个数组就不全是0哈

user: user-5
content: 不能，只能一个元素一个元素比较 数量少的话直接写，数量多或者不定的话用循环

user: user-8
content: 不是啊，a[10]已经越界了。遍历判断。
user-0 提问: 16进制数 与 uint8_t 数据类型转换

回复:
user: user-1
content: 严重怀疑不带长度的transmit函数如何工作。

user: user-2
content: 只要你保证字节数不变即可.  内存中不管哪种数据类型基本单位都是字节, 只是占用字节不同而以.  int   intBuf[100] ; short   shBuf[100] char chBuf[100];  transmit( (const uint8_t*)intBuf);  发送 100*4字节   (假设int为4字节, int8_t为1字节) transmit( (const uint8_t*)shBuf);  发送 100*2字节  (假设short为2字节) transmit( (const uint8_t*)chBuf);  发送100字节.

user: user-0
content: 引用 9 楼 xiaohuh421 的回复:因为函数的定义决定了你只能专指针,  如果你想输入常数, 那么你就需要想办法得到常数的地址.  因为常数就是一个立即数, 是没有存储空间的. 但函数又需要空间的地址  所以, 只能使用中间变量了. 我理解了。 现在已经解决了。也是通过再封装一个。 void transmit1(uint8_t data)  { 	const uint8_t *data11 = &data; 	transmit(data11); }   这样避免了修改接口，也避免了把要传输的数据先放在一个表里再一个个拿出来了。   谢谢，分给你。

user: user-2
content: 因为函数的定义决定了你只能专指针,  如果你想输入常数, 那么你就需要想办法得到常数的地址.  因为常数就是一个立即数, 是没有存储空间的. 但函数又需要空间的地址  所以, 只能使用中间变量了.

user: user-2
content: 如果这样的代码: const uint8_t a = 0xAA; transmit(&a); 你都懒得写.  那么你可以再封装一个函数出来 transmit( uint8_t  val) {      transmit(&val); } 好了, 现在你可以这样调用了 transmit(0x20);

user: user-0
content: 引用 2 楼 xiaohuh421 的回复:只要你保证字节数不变即可.  内存中不管哪种数据类型基本单位都是字节, 只是占用字节不同而以.  int   intBuf[100] ; short   shBuf[100] char chBuf[100];  transmit( (const uint8_t*)intBuf);  发送 100*4字节   (假设int为4字节, int8_t为1字节) transmit( (const uint8_t*)shBuf);  发送 100*2字节  (假设short为2字节) transmit( (const uint8_t*)chBuf);  发送100字节. 谢谢回复。 字节数不变，所有数据都是8bit。0x20, 0x21....但是不能强制转换作为参数传入的数据。 比如transmit((const uint8_t *)0x20);这样不可以。。  我知道可以这样： const uint8_t a = 0xAA; transmit(&a);  但是我希望能够把数据直接作为传入参数。有什么其他办法么？谢谢。

user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:严重怀疑不带长度的transmit函数如何工作。 谢谢回复。 有其他参数，包括长度，我只给了这个有关的接口。。 spi_master_tx_rx(uint32_t *spi_base_address, uint16_t transfer_size, const uint8_t *tx_data, uint8_t *rx_data)

user: user-0
content: 引用 1 楼 u012586257 的回复:我觉得可以直接转吧，有什么问题吗？都是无符号8位整数 比如 unsigned char c  = 0xAC; transmit((uint8_t *)&c); 谢谢回复。 确实，你这样写是可以的。但是这就要我把所有需要传输的数据都先定义在一个数组里。。而我希望是能直接把0xAC这样的数据作为参数给函数直接使用。。

user: user-3
content: 引用我需要传输一些16进制的数，比如0x11, 0xAC之类的。但是可用的传输函数接口如下： transmit(const uint8_t *tx)  1 16进制的字符串 “0x1123456789”这样，还是int的16进制数。这个处理是不一样的。 2 transmit(const uint8_t *tx) 这个函数的入口参数是什么意思，你是要传字符串的首地址吗，亲

user: user-4
content: 我觉得可以直接转吧，有什么问题吗？都是无符号8位整数 比如 unsigned char c  = 0xAC; transmit((uint8_t *)&c);
user-0 提问: C语言有现成的树函数或链表吗？还是需要自己实现？

回复:
user: user-1
content: 引用 2 楼 u014541584 的回复:[quote=引用 1 楼 u010570670 的回复:] 有这样的需求不要用C，用C++。 你还没说有还是没有呢！[/quote] 没仔细研究过C的标准，不过标准库里有的可能性很小，一般都自己写，要不用容器。

user: user-0
content: 引用 1 楼 u010570670 的回复:有这样的需求不要用C，用C++。 你还没说有还是没有呢！

user: user-1
content: 有这样的需求不要用C，用C++。
user-0 提问: 为什么结构要包含进头文件而不能用extern来调用？

回复:
user: user-1
content: 不要自己发明概念，调用这个词没有你这么用的，除非你自己发明一门编程语言否则请遵守公用定义 extern是声明而不是定义，只告知编译器有这么一个名字的东西没有告知编译器关于这东西的任何细节，代码里要对一个结构体操作的时候必须知道这个结构体的细节，因此在该行代码前必须出现这个结构体的定义

user: user-0
content: 比如说我在一个原文件中main（）函数前声明了一个结构 typedef struct { ... ...} Var； 然后我想在其他文件中引用

user: user-2
content: 引用 4 楼 u014541584 的回复:[quote=引用 3 楼 user-2 的回复:] [quote=引用 2 楼 u014541584 的回复:] [quote=引用 1 楼 user-2 的回复:] extern是用来声明的 你说的调用是指？？ 不是吧，extren是用来调用在别的源文件中的全局变量声明，我的意思是想如此调用结构声明： extern struct TAB var;[/quote]  调用一般指的是call or invoke 一般我们所认为的就是函数调用，如果说对变量进行使用，我们可以说引用，也可以说使用，但是调用有点歧义。  extern struct TAB var;这句话的意思是var这个变量可以再其他文件中定义 [/quote] 我的意思是，为什么extern引用结构声明是错误的？而必须要把结构包含在一个头文件中再#include？[/quote]  什么叫引用结构声明

user: user-0
content: 引用 3 楼 user-2 的回复:[quote=引用 2 楼 u014541584 的回复:] [quote=引用 1 楼 user-2 的回复:] extern是用来声明的 你说的调用是指？？ 不是吧，extren是用来调用在别的源文件中的全局变量声明，我的意思是想如此调用结构声明： extern struct TAB var;[/quote]  调用一般指的是call or invoke 一般我们所认为的就是函数调用，如果说对变量进行使用，我们可以说引用，也可以说使用，但是调用有点歧义。  extern struct TAB var;这句话的意思是var这个变量可以再其他文件中定义 [/quote] 我的意思是，为什么extern引用结构声明是错误的？而必须要把结构包含在一个头文件中再#include？

user: user-2
content: 引用 2 楼 u014541584 的回复:[quote=引用 1 楼 user-2 的回复:] extern是用来声明的 你说的调用是指？？ 不是吧，extren是用来调用在别的源文件中的全局变量声明，我的意思是想如此调用结构声明： extern struct TAB var;[/quote]  调用一般指的是call or invoke 一般我们所认为的就是函数调用，如果说对变量进行使用，我们可以说引用，也可以说使用，但是调用有点歧义。  extern struct TAB var;这句话的意思是var这个变量可以再其他文件中定义

user: user-0
content: 引用 1 楼 user-2 的回复:extern是用来声明的 你说的调用是指？？ 不是吧，extren是用来调用在别的源文件中的全局变量声明，我的意思是想如此调用结构声明： extern struct TAB var;

user: user-2
content: extern是用来声明的 你说的调用是指？？
user-0 提问: 关于字符串地址的问题

回复:
user: user-0
content: 谢谢各位的耐心解答，在这个帖子中，我了解到了： 1. memcpy()、strcpy()、memset()的几种用法 2.对‘\0’的概念更清楚了

user: user-1
content: int Init(struct buffer *Buf, char *head_ptr_1, char *head_ptr_2)     {          memset(Buf->packet_head_1, 0, sizeof(Buf->packet_head_1) );          memset(Buf->packet_head_2, 0, sizeof(Buf->packet_head_2) );          strcpy(Buf->packet_head_1, head_ptr_1);          strcpy(Buf->packet_head_2, head_ptr_2);     } strcpy的时候注意数组越界

user: user-2
content: c++的字符串是以“\0”结束的，packet_head_1[4]相当于一个指针没有遇到“\0”就不会停止的。

user: user-3
content: “多一少一”问题占程序员常犯错误的10%以上！ 避免“多一少一”问题的方法之一是将比如<10甚至<5的数代入程序片断，搬手指头心算验证一下程序到底应该写为 x、x-1、x+1中的哪个？ <、<=、==、>、>=中的哪个？

user: user-4
content: 数组访问越界

user: user-0
content: 引用 1 楼 relaxisland 的回复:char packet_head_1[4]; -----> char packet_head_1[5]; 字符数组如果要当做字符串来使用， 其长度 应该 比 字符的个数多一个。 比把多余的哪一个设置为0x00 也就是\0  这是字符串的结束标识符， C语言是考这个来定位 字符串结束的地方。 谢谢relaxisland，我试过把长度增加为20，但是Buf->packet_head_1最后得到的值到最后还是"$ABC????????????$DEF\"，而我后面的程序是想用strcmp()比较一个temp[4]和Buf->packet_head_1的值，这样的话即使temp[4]内的值是"$ABC"，但是用strcmp()还是会得到两者不同的结果。

user: user-5
content: char packet_head_1[4]; -----> char packet_head_1[5]; 字符数组如果要当做字符串来使用， 其长度 应该 比 字符的个数多一个。 比把多余的哪一个设置为0x00 也就是\0  这是字符串的结束标识符， C语言是考这个来定位 字符串结束的地方。

user: user-6
content: 你这是字符数组，就不要当做字符串看了； 需要字符串的话直接 多定义几个字节strcpy； 字符数组，当字符串还是数组用主要还在乎你自己。  Debug的时候，VC6调试器，把字符数组当做字符串看了，所以就显示一大串。 他会不辞辛苦的一直找到'\0'为止。 你需要调试数组，就一个一个看每个元素，不要被VC6调试器迷惑了。

user: user-7
content: 引用 2 楼 conanson 的回复:[quote=引用 1 楼 relaxisland 的回复:] char packet_head_1[4]; -----> char packet_head_1[5]; 字符数组如果要当做字符串来使用， 其长度 应该 比 字符的个数多一个。 比把多余的哪一个设置为0x00 也就是\0  这是字符串的结束标识符， C语言是考这个来定位 字符串结束的地方。 谢谢relaxisland，我试过把长度增加为20，但是Buf->packet_head_1最后得到的值到最后还是"$ABC????????????$DEF\"，而我后面的程序是想用strcmp()比较一个temp[4]和Buf->packet_head_1的值，这样的话即使temp[4]内的值是"$ABC"，但是用strcmp()还是会得到两者不同的结果。[/quote] int Init(struct buffer *Buf, char *head_ptr_1, char *head_ptr_2)     {         int i;         for (i = 0; i < 4; i++){             Buf->packet_head_1[i] = *(head_ptr_1 + i);             Buf->packet_head_2[i] = *(head_ptr_2 + i);         }           Buf->packet_head_1[4] = ‘\0’;            Buf->packet_head_2[4] = ‘\0’;     }

user: user-8
content: Buf->packet_head_1[i] = *(head_ptr_1 + i);         Buf->packet_head_2[i] = *(head_ptr_2 + i);  memcpy

user: user-5
content: 引用 2 楼 conanson 的回复:[quote=引用 1 楼 relaxisland 的回复:] char packet_head_1[4]; -----> char packet_head_1[5]; 字符数组如果要当做字符串来使用， 其长度 应该 比 字符的个数多一个。 比把多余的哪一个设置为0x00 也就是\0  这是字符串的结束标识符， C语言是考这个来定位 字符串结束的地方。 谢谢relaxisland，我试过把长度增加为20，但是Buf->packet_head_1最后得到的值到最后还是"$ABC????????????$DEF\"，而我后面的程序是想用strcmp()比较一个temp[4]和Buf->packet_head_1的值，这样的话即使temp[4]内的值是"$ABC"，但是用strcmp()还是会得到两者不同的结果。[/quote] 应该在你想结束的地方 设置为 0 啊 或者字符数组赋值前，把所有的的元素 初期化为 0x00
user-0 提问: 我用的C-free编C语言。最近一件诡异的事。

回复:
user: user-0
content: 已经解决了。 把C-free卸载，注册表所有关于它的记录全删，关于C-FREE的文件也全删。再重装就好了、。

user: user-1
content: 引用 楼主 Forthe2012 的回复:我构建并运行所有程序代码时，都是这样的提示：  完成构建：0错误 0警告 运行。  就这样了。看起来是正常的提示。但我的代码明明有输出（包括简单如helloworld这种代码），可运行时没有控制台窗口出现。。。  我疑惑，于是故意改代码，把int main（）改成int min（）  结果还是提示我： 完成构建：0错误 0警告 运行。  看来不是软件，就是我电脑问题了。卸了重装，不行，又把系统还原，还是不行。。。  这是怎么回事？？ 为什么你认为没有main，就一定不能编过呢

user: user-2
content: http://www.microsoft.com/visualstudio/chs/downloads#d-2010-express 点开Visual C++ 2010 Express下面的语言选‘简体中文’，再点立即安装

user: user-3
content: 把编译生成的一些文件都删除了吧！

user: user-4
content: 引用我疑惑，于是故意改代码，把int main（）改成int min（）  哈哈，太有才了，main 是入口函数。  另 C-free是要收费的。壕

user: user-5
content: 直接按 F5 编译运行

user: user-6
content: clean + rebuild all 没有显示console window? 加 system("pause");

user: user-7
content: 没有控制台窗口出现？你试下开始执行不调试看看
user-0 提问: 关于int main()的问题

回复:
user: user-0
content: [quote=引用 1 楼 user-1 的回复:] 1，2是一样的，都是不带参数的。 3，4是带参数的。 3和4的区别： 虽然看起来不太一样，但是还是一样的。 3中的argv是个数组，数组中的数据是char *，此时argv就是这个char*数组的首地址，也就是指向char*的指针，也就是char **argv。[/quote谢谢34大哥，明白了~

user: user-1
content: 1，2是一样的，都是不带参数的。 3，4是带参数的。 3和4的区别： 虽然看起来不太一样，但是还是一样的。 3中的argv是个数组，数组中的数据是char *，此时argv就是这个char*数组的首地址，也就是指向char*的指针，也就是char **argv。
user-0 提问: SWU if结构的使用

回复:
user: user-1
content: 引用 2 楼 XWL1992 的回复:"="是赋值运算符，“==”是等于运算符，你要判断两个表达式是否相等，你应该使用等于运算符。所以你应该这样写:if(a == 5.5)  对浮点数进行相等判断是非常危险的。因为变量的值完全可能为5.5000001或者5.4999999之类的。 另外标题前缀应该是[SWU]，你忘记中括号了。

user: user-0
content: 引用 4 楼 Falleyes 的回复:float a; do{    scanf("%d",&a);    if(a==5.5){       printf("t\n");       break;   //得到正确的值终止    }    else       printf("w\n"); while(1);   //一直为真，一直循环，直到内部跳出  补充一点，如果你想让人家继续回答，就引用别人那一楼层，这样别人的消息栏里面就能看到你的话。要不然，还要找到这个问题，进来看一看你有没有回复人家，很麻烦的。每一楼层右下角都有引用 谢谢，以后知道了 引用 4 楼 Falleyes 的回复:float a; do{    scanf("%d",&a);    if(a==5.5){       printf("t\n");       break;   //得到正确的值终止    }    else       printf("w\n"); while(1);   //一直为真，一直循环，直到内部跳出  补充一点，如果你想让人家继续回答，就引用别人那一楼层，这样别人的消息栏里面就能看到你的话。要不然，还要找到这个问题，进来看一看你有没有回复人家，很麻烦的。每一楼层右下角都有引用 谢谢，以后知道了

user: user-2
content: float a; do{    scanf("%d",&a);    if(a==5.5){       printf("t\n");       break;   //得到正确的值终止    }    else       printf("w\n"); while(1);   //一直为真，一直循环，直到内部跳出  补充一点，如果你想让人家继续回答，就引用别人那一楼层，这样别人的消息栏里面就能看到你的话。要不然，还要找到这个问题，进来看一看你有没有回复人家，很麻烦的。每一楼层右下角都有引用

user: user-1
content: 这和浮点数的存储原理有关系，浮点数的精度是有限的。

user: user-2
content: 引用 7 楼 u013978386 的回复:[quote=引用 6 楼 arthuryangsh 的回复:] [quote=引用 2 楼 XWL1992 的回复:] "="是赋值运算符，“==”是等于运算符，你要判断两个表达式是否相等，你应该使用等于运算符。所以你应该这样写:if(a == 5.5)  对浮点数进行相等判断是非常危险的。因为变量的值完全可能为5.5000001或者5.4999999之类的。 另外标题前缀应该是[SWU]，你忘记中括号了。[/quote]  引用 6 楼 arthuryangsh 的回复:[quote=引用 2 楼 XWL1992 的回复:] "="是赋值运算符，“==”是等于运算符，你要判断两个表达式是否相等，你应该使用等于运算符。所以你应该这样写:if(a == 5.5)  对浮点数进行相等判断是非常危险的。因为变量的值完全可能为5.5000001或者5.4999999之类的。 另外标题前缀应该是[SWU]，你忘记中括号了。[/quote]   搬砖点错了，哈哈，一定遵守，哈哈 变量的值为什么会变？[/quote]因为计算机计算数据长度是有限的，而且有国际上的数据处理标准（什么时候四舍五入，浮点数归0啊什么的），这个你可以涉及一下计算机组成原理。

user: user-0
content: 引用 6 楼 arthuryangsh 的回复:[quote=引用 2 楼 XWL1992 的回复:] "="是赋值运算符，“==”是等于运算符，你要判断两个表达式是否相等，你应该使用等于运算符。所以你应该这样写:if(a == 5.5)  对浮点数进行相等判断是非常危险的。因为变量的值完全可能为5.5000001或者5.4999999之类的。 另外标题前缀应该是[SWU]，你忘记中括号了。[/quote]  引用 6 楼 arthuryangsh 的回复:[quote=引用 2 楼 XWL1992 的回复:] "="是赋值运算符，“==”是等于运算符，你要判断两个表达式是否相等，你应该使用等于运算符。所以你应该这样写:if(a == 5.5)  对浮点数进行相等判断是非常危险的。因为变量的值完全可能为5.5000001或者5.4999999之类的。 另外标题前缀应该是[SWU]，你忘记中括号了。[/quote]   搬砖点错了，哈哈，一定遵守，哈哈 变量的值为什么会变？

user: user-3
content: "="是赋值运算符，“==”是等于运算符，你要判断两个表达式是否相等，你应该使用等于运算符。所以你应该这样写:if(a == 5.5)

user: user-4
content: 第7行if(a==5.5)

user: user-0
content: 奥，明白了，谢谢楼上诸位。    再问一个问题：           上面的循环只能够执行一次，如果我想要多次执行判断，也就是说，不断的输入值，判断正误，指导得到正确值为止。    应该怎么设计循环呢？  能不能劳烦再指点一下哈。
user-0 提问: 求大侠帮忙，关于C语言查找文件中对应的记录问题

回复:
user: user-0
content: 引用 1 楼 zxhuser-1 的回复:用一个临时变量存储“无匹配记录”的个数 感谢回复，如果我不确定csv中某年的记录个数，那应该怎么办？具体怎么实现，能在教教我吗？不甚感激...

user: user-1
content: 用一个临时变量存储“无匹配记录”的个数

user: user-1
content: 我用单项链表动态创建存储的 具体可以参考一下我的统计成绩的代码 下载地址： http://pan.baidu.com/s/1ntuNH0X
user-0 提问: vc能测试函数吗？如果能的话，请教之。

回复:
user: user-1
content: 可以直接调试啊

user: user-2
content: 单元测试，用cppunit

user: user-3
content: 莫非你说的是断点

user: user-0
content: 我是一个新手，在自学c，可能一些表达不是太正确。就是对一些函数的功能，能一些让他run一下嘛？从而判断这个函数靠谱不靠谱？

user: user-4
content: 目测是 设置断点

user: user-5
content: 引用 楼主 u014082409 的回复:弱弱问一下大家，vc6.0能测试函数吗？如果能的话，该如何操作，请教之。 请说普通话

user: user-0
content: 难道测试不能的函数有不同的测试标准吗？

user: user-6
content: 你想怎么测试函数
user-0 提问: hash函数：为字符串s生成散列值。

回复:
user: user-0
content: 请问这不是就是传说中数据结构里面哈希表的问题啊？

user: user-1
content: 算法问题。。。

user: user-0
content: 函数的散列值值要这么求是约定俗成的规矩吗？

user: user-1
content: 标题不是说这个函数是做散列值的吗？
user-0 提问: 自学C语言,一模一样对着例题敲的代码,却死活通不过,郁闷啊!求教!

回复:
user: user-1
content: #include<stio.h> int main() { prinf("hello,world\n"); return 0; }

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

user: user-2
content: 关于自己是否适合编程的很简单的测试： 在报纸或杂志上随便找一段约1000字的文章，在Word中输入一遍。输完后再参考下面答案：  A里面有10处以上文字或标点错误 B里面没有文字或标点错误并敢为此跟人打赌 C里面没有文字或标点错误并且字体和排版完全与原稿一致 D打印在半透明的纸上和原稿重叠在一起检查一模一样，且自我感觉很有成就感  A不适合编程（理由：打字准确度偏低、粗心大意） B初级程序员（理由：打字准确度很高、认真细致、自信、理解全角半角概念） C高级程序员（理由：在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证） D软件项目经理（理由：能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业！）  如果想从A变成B的话，到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”

user: user-3
content: lz粗心了。。

user: user-4
content: 一般都是粗心大意的错。

user: user-5
content: 引用 7 楼 u014571910 的回复:可是为什么我就一点点错误,它提示出错那么多?这个错误提示的意思是什么呢? 编译器看不出代码里你那里写错了，它只能把你的错误代码编译成程序，直到某个地方没办法编译了才报错 所以你一个小笔误可能会导致一系列需要这个地方正确写法的地方出错，编译器报错也未必就是你写错的那个地方 还是那句话，如果编译器能够发现一切错误，从逻辑上讲，它也能自己写程序，程序员都可以去死了

user: user-6
content: 试试是不是这样啊  #include<stio.h> int main() { prinf("hello,world\n"); return 0; }  你试试吧 献丑了

user: user-7
content: 据我所知，那些是编译器认为可能出错的地方，像你的这次情况，其实你只要改一个就没事了

user: user-0
content: 可是为什么我就一点点错误,它提示出错那么多?这个错误提示的意思是什么呢?

user: user-0
content: 还真的是因为小括号的原因,感谢上面两位,非常感谢!已经通过了,总算拾回一点信心.

user: user-8
content: 好几个错误，你确定抄的一模一样？

user: user-7
content: main后面该是圆括号啊！lz确定没敲错？

user: user-9
content: 不熟悉C，不过C++中，main后应该是小括号。

user: user-0
content: 可是我还没有开始学VC++呢! 并且我很想知道代码是对着书一模一样敲的,没有错啊!

user: user-10
content: 用visual c++吧,一下就通过了
user-0 提问: C程序趣味题疑惑求解释，谢谢

回复:
user: user-1
content: 看了一下画出来的图形结果 跟y的初始值相对应的吧， 如果不用1-y而是直接用y 明显的出来的反余弦函数值不是从第一列开始的 具体的楼主可以再看看反余弦函数的特性
user-0 提问: （菜鸟求教）求大神指正代码出现的错误

回复:
user: user-1
content: 1，对指针指向的内存管理不当， 2，对指针的处理不当

user: user-2
content: 引用 楼主 linyujing6388 的回复:main.c 文件 #include "student.h" int main () {    STUDENT* Student; STUDENT* Student; Student是野指针。

user: user-3
content: http://blog.csdn.net/haoel/article/details/2879
user-0 提问: C语言

回复:
user: user-1
content: 搜 C语言 日期库

user: user-2
content: 直接上代码吧  #include <stdio.h>  /* 判断是否为润年，如果是，返回 1, 否则返回 0 */ static int is_leap(unsigned int year) {     if ((year%4==0) && (year%100!=0) || (year%400==0)) {         return 1;     } else {         return 0;     } }  /* 判断一个月是否属于大月分, 如果不是大月返回 0, 如果是大月返回 1, 如果是2月返回 2 */ static int is_big_month(unsigned char month) {     switch (month) {         case 1:         case 3:         case 5:         case 7:         case 8:         case 10:         case 12:             return 1;         case 4:         case 6:         case 9:         case 11:             return 0;         case 2:             return 2;     } }  /* 主函数 */ int main() {     int year, month, day;      while (1) {     printf("请输入 年 月 日\n");     scanf("%d%d%d", &year, &month, &day);          if (year<1 || month<1 || month>12 || day<1 || day>31) {         fprintf(stderr, "输入有误!\n");         return 1;     }      int ret = is_big_month(month);     int d;     if (ret != 2) {         d = 30 + ret;     } else {         d = 28 + is_leap(year);     }      ++day;     ++d;     month += day / d;     year += month / 13;     if ((month %= 13) == 0) {         month = 1;     }     if ((day %= d) == 0) {         day = 1;     }      printf("下一天 %d %d %d\n", year, month, day);     }     return 0; }

user: user-3
content: 先判断是否是1231  然先判断是否它是否为闰年 再根据平闰年判断是否为 28 或者 29 再判断是否为31（1、3、5、7、8、10） 或者30 （4、6、9、11） 其余的都把日期加1就ok  这只是一种我刚刚想到  应该还有更优算法 多想想就能找到风向了
user-0 提问: 各位大神们帮我找找哪里有问题

回复:
user: user-0
content: 晕了

user: user-1
content: case 'm':                          //乘法            int shuju(void);            float multiply(float a, float b);            break;        case 'd':                           //减法    int shuju(void);            float divide(float a, float b);            break; 有这样调用函数的吗？
user-0 提问: 请教 ：继C语言  9*9乘法表

回复:
user: user-1
content: #include <stdio.h> #include <string.h> int main() {     int a,b;     char s[73],t[10];      for (a=9;a>0;a--) {         s[0]=0;         for (b=a;b<10;b++) {             sprintf(t," %dx%d=%d",a,b,a*b);             if (a==2 && b==5) strcat(s," ");             strcat(s,t);             if (a==1 && b>=4) strcat(s," ");         }         printf("%60s\n",s);     }     return 0; } //                                                      9x9=81 //                                               8x8=64 8x9=72 //                                        7x7=49 7x8=56 7x9=63 //                                 6x6=36 6x7=42 6x8=48 6x9=54 //                          5x5=25 5x6=30 5x7=35 5x8=40 5x9=45 //                   4x4=16 4x5=20 4x6=24 4x7=28 4x8=32 4x9=36 //             3x3=9 3x4=12 3x5=15 3x6=18 3x7=21 3x8=24 3x9=27 //       2x2=4 2x3=6 2x4=8  2x5=10 2x6=12 2x7=14 2x8=16 2x9=18 // 1x1=1 1x2=2 1x3=3 1x4=4  1x5=5  1x6=6  1x7=7  1x8=8  1x9=9

user: user-2
content: #include <stdio.h> void main() { int i = 0, j = 0; int n; printf("输入数字："); while(scanf("%d",&n)!=EOF) { for (i = 1; i <= n; i++) for (j = 1; j <= i; j++) if(i==j) printf("%d*%d=%d\n",j,i,i*j); else printf("%d*%d=%d ",j,i,i*j); } }  /* 输入数字：9 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 */

user: user-3
content: #include <stdio.h> int main(void) {     int i,j;     for(i = 1; i <= 9; i++)     {         for(j = 1; j <= 9; j++)         {             printf("%dX%d=%d|",i,j,i*j);         }         printf("\n");     }     return 0; }

user: user-4
content: 哈哈 坐等收分引用 4 楼 u014554246 的回复:谢谢  非常感谢

user: user-0
content: 谢谢  非常感谢

user: user-4
content: #include <stdio.h> int main(void) { 	int i,j; 	for(i = 1; i <= 9; i++) 	{ 		for(j = 1; j <= 9; j++) 		{ 			printf("%dX%d=%d|",i,j,i*j); 		} 		printf("\n"); 	} 	return 0; }

user: user-0
content: 亲，上午好， 百度出来的    结果不一样 ，不知道怎么写成想题目要求的格式

user: user-4
content: lz自己去写吧  这个都要来问？  百度一大把