Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 结构体内定义了多个成员变量时，声明结构体数组后如何赋值？

回复:
user: user-0
content: 引用 4 楼 qq_38576126 的回复:[quote=引用 2 楼 qq848439256 的回复:]  刚才不知道怎么的这种没试成功，现在已经成功了，就是我这个图。 City c[3]={{"001","北京"},{"002","上海"},{"003","深圳"}}; 大括号的和不加括号的是对的，小括号的不对[/quote] 好的

user: user-1
content: 引用 2 楼 qq848439256 的回复: 刚才不知道怎么的这种没试成功，现在已经成功了，就是我这个图。 City c[3]={{"001","北京"},{"002","上海"},{"003","深圳"}}; 大括号的和不加括号的是对的，小括号的不对

user: user-0
content: 引用 1 楼 qq_38576126 的回复: #include<iostream> #include<stdio.h> using namespace std; typedef struct {     char qh[8];     char name[15]; } City; int main() {     City c[3];     //第一种     for(int i=0; i<3; i++)         scanf("%s%s",c[i].qh,c[i].name);     for(int i=0; i<3; i++)         printf("%s %s\n",c[i].qh,c[i].name);     //第二种     for(int i=0; i<3; i++)         scanf("%s%s",(c+i)->qh,(c+i)->name);     for(int i=0; i<3; i++)         printf("%s %s\n",(c+i)->qh,(c+i)->name); }  谢谢你，虽然不是我想要的那种。我知道怎么用了，刚才不知道怎么弄的没成功，现在已经成功

user: user-0
content: 刚才不知道怎么的这种没试成功，现在已经成功了，就是我这个图。

user: user-1
content: #include<iostream> #include<stdio.h> using namespace std; typedef struct {     char qh[8];     char name[15]; } City; int main() {     City c[3];     //第一种     for(int i=0; i<3; i++)         scanf("%s%s",c[i].qh,c[i].name);     for(int i=0; i<3; i++)         printf("%s %s\n",c[i].qh,c[i].name);     //第二种     for(int i=0; i<3; i++)         scanf("%s%s",(c+i)->qh,(c+i)->name);     for(int i=0; i<3; i++)         printf("%s %s\n",(c+i)->qh,(c+i)->name); }
user-0 提问: 跟链表有关的，程序无法运行

回复:
user: user-1
content: 数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

user: user-0

user: user-0
content: 引用 3 楼 自信男孩的回复:#include<stdio.h> #include<stdlib.h>  #define LEN sizeof(struct B)  struct B {     int a;     struct B *p; }; struct B*creat() {     char b;     struct B*head,*p1,*p2;     int c=0;     head=NULL;     b = getchar();     while(b!='\n')     {         if(c == 0)    /*here is not '=' */         {             p1 = (struct B*)malloc(LEN);             p2 = p1;             head = p1;             p1->a = c++;   /* here c must add 1*/             continue;         }         else         {             p1=(struct B*)malloc(LEN);             p2->p = p1;             p2 = p1;             p1->a = c + 1;         }         c = c + 1;         b = getchar();     }     p1->p = NULL;     printf("%d", c);     return head; } int main() {     struct B*p3;     p3=creat();     return 0; } 两个问题，分别在语句后面加了注释。 个人建议，结构体用于指向下一个节点的地址指针，建议取名为next或者pnext；这样见名知义，提高代码的可读性。 多谢，完美解决了我的问题

user: user-2
content: #include<stdio.h> #include<stdlib.h>  #define LEN sizeof(struct B)  struct B {     int a;     struct B *p; }; struct B*creat() {     char b;     struct B*head,*p1,*p2;     int c=0;     head=NULL;     b = getchar();     while(b!='\n')     {         if(c == 0)    /*here is not '=' */         {             p1 = (struct B*)malloc(LEN);             p2 = p1;             head = p1;             p1->a = c++;   /* here c must add 1*/             continue;         }         else         {             p1=(struct B*)malloc(LEN);             p2->p = p1;             p2 = p1;             p1->a = c + 1;         }         c = c + 1;         b = getchar();     }     p1->p = NULL;     printf("%d", c);     return head; } int main() {     struct B*p3;     p3=creat();     return 0; } 两个问题，分别在语句后面加了注释。 个人建议，结构体用于指向下一个节点的地址指针，建议取名为next或者pnext；这样见名知义，提高代码的可读性。
user-0 提问: 二元运算符重载的友元函数实现

回复:
user: user-1
content: Java转过来的？C++里非引用传参就是复制一份，不是传什么指针。

user: user-2
content: friend Coordinate operator-(const Coordinate &c1, const  Coordinate &c2);    friend Coordinate operator-(const Coordinate c1, const  Coordinate c2);

user: user-3
content: 引用 3 楼 a673786103 的回复:[quote=引用 2 楼 hdt 的回复:] 可是 如果没有引用符号 两个指针的值都不同  怎么操作原来的空间？ =========================== 比如  int c = a-b;   难道 你要在operator- 里面修改输入参数？？？ 从语义上来说a和b是只读的  但是两个地址和实参都不相同 不是一个地方[/quote] 传值相当于复制，为何要一样呢？ 传值的缺点是效率比较低而已。 如果你真想了解其中区别，建议看看ec++

user: user-0
content: 引用 2 楼 hdt 的回复:可是 如果没有引用符号 两个指针的值都不同  怎么操作原来的空间？ =========================== 比如  int c = a-b;   难道 你要在operator- 里面修改输入参数？？？ 从语义上来说a和b是只读的  但是两个地址和实参都不相同 不是一个地方

user: user-3
content: 可是 如果没有引用符号 两个指针的值都不同  怎么操作原来的空间？ =========================== 比如  int c = a-b;   难道 你要在operator- 里面修改输入参数？？？ 从语义上来说a和b是只读的

user: user-3
content: ec++ 关于重载操作符，有详细的讲解
user-0 提问: 在win10 ，vs2015，wdk10开发环境下，出现C1083错误，不同的wdk平台版本出现不同的.h错误

回复:
user: user-1
content: Windows驱动开发 http://www.osronline.com/

user: user-2
content: 卸载重装WINSDK跟WDK试下

user: user-0
content: 引用 10 楼 zwfgdlc 的回复:卸载重装WINSDK跟WDK试下  今天卸载重装了一下，已经解决了。

user: user-0
content: 引用 8 楼 zwfgdlc 的回复:[quote=引用 6 楼 qq_27255679 的回复:] [quote=引用 5 楼 zwfgdlc 的回复:] Windows SDK跟WDK版本是不是不一样？  设置了，两个平台版本更换的时候都进行sdk更改了。[/quote] 我是说你安装的WINSDK跟WDK是不是一样， 比如WINSDK版本10.0.15063.xxx对应的WDK版本也要是10.0.15063.xxx [/quote]  我的wdk版本用的是10.0.10586.0。sdk也是10.0.10586.0

user: user-2
content: 引用 6 楼 qq_27255679 的回复:[quote=引用 5 楼 zwfgdlc 的回复:] Windows SDK跟WDK版本是不是不一样？  设置了，两个平台版本更换的时候都进行sdk更改了。[/quote] 我是说你安装的WINSDK跟WDK是不是一样， 比如WINSDK版本10.0.15063.xxx对应的WDK版本也要是10.0.15063.xxx

user: user-0
content: 引用 5 楼 zwfgdlc 的回复:Windows SDK跟WDK版本是不是不一样？

user: user-0
content: 引用 5 楼 zwfgdlc 的回复:Windows SDK跟WDK版本是不是不一样？  设置了，两个平台版本更换的时候都进行sdk更改了。

user: user-2
content: Windows SDK跟WDK版本是不是不一样？

user: user-0
content: 引用 2 楼 zwfgdlc 的回复:工程属性里选择目标平台版本   选择了，两个都试了。10.0.10586.0和10.0.15063.0都更换了一下，都不行。不过报的错误不一样。

user: user-0
content: 引用 1 楼 u013276931 的回复:我也遇到了相同的问题，望大佬解答  你QQ多少，咱们交流一下

user: user-2
content: 工程属性里选择目标平台版本

user: user-3
content: 我也遇到了相同的问题，望大佬解答
user-0 提问: PAT basic 1044火星文字

回复:
user: user-1
content: 边界条件 输入输出格式 ……

user: user-2
content: #include <stdio.h> #include <stdlib.h> #include <string.h>   static char *fire_digit[13] = { "tret", "jan", "feb",     "mar", "apr", "may",     "jun", "jly", "aug",     "sep", "oct", "nov",     "dec" };  static char *carray_digit[12] = {   "tam", "hel", "maa",     "huh", "tou", "kes",     "hei", "elo", "syy",     "lok", "mer", "jou" };  static char *digit = "0123456789";  #define FIRE_NUM     (sizeof(fire_digit)/sizeof(fire_digit[0]))  void divide_str(char *str, char **part1, char **part2);  int main(void) {     char str[32];     char *p = NULL, *q = NULL;     int time, num;     int i, j;      scanf("%d", &time);     getchar();    /*for '\n' */      for (i = 0; i < time; i++) {         fgets(str, 32, stdin);         str[strlen(str)-1] = 0;         if (strchr(digit, str[0])) {             num = atoi(str);             printf("num = %d\n", num);             if (num >= 0 && num < 169) {                 printf("%s ", carray_digit[num / FIRE_NUM-1]);                 printf("%s\n", fire_digit[num % FIRE_NUM]);             }         } else {             divide_str(str, &p, &q);             num = 0;             if (p && q) {                 for (j = 0; j < FIRE_NUM -1; j++)                     if (strcmp(p, carray_digit[j]) == 0) {                         num += (j + 1) * FIRE_NUM;                         break;                     }                 for (j = 0; j < FIRE_NUM; j++)                     if (strcmp(q, fire_digit[j]) == 0) {                         num += j;                         break;                     }             } else {                 for (j = 0; j < FIRE_NUM; j++)                     if (strcmp(q, fire_digit[j]) == 0) {                         num += j;                     }             }             printf("%d\n", num);         }     }      return 0; }  void divide_str(char *str, char **part1, char **part2) {     int i = 0;      while (str[i] == ' ')         i++;      *part1 = str + i;     for (; str[i]; i++) {         if (str[i] == ' ') {             str[i] = 0;             *part2 = str + i + 1;             break;         }     } } 参考一下吧

user: user-0
content: 引用 1 楼 cfjtaishan 的回复:这个题目的要求是什么？什么是火星文字，不明白。代码有点乱，逻辑不是很清楚。建议，把需求贴出来吧

user: user-2
content: 这个题目的要求是什么？什么是火星文字，不明白。代码有点乱，逻辑不是很清楚。建议，把需求贴出来吧
user-0 提问: ACM中遇到的有个问题  不是很理解  一个getchar()解决的问题  为什么加上getchar()就AC了  没有就报错 

回复:
user: user-1
content: 这个问题可能跟题目本身的数据有关，个人刷过的题这样的写法一般能A

user: user-0
content: 谢谢您， 以后记得及时使用

user: user-0
content: 谢谢您  我只是个小白  不懂这么多  以后多问多学

user: user-2
content: printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方，而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。  在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。 //请今后要用 char c; scanf("%c",&c); //时，都改为 char s[2]; char c; scanf("%1s",s); c=s[0]; //自动跳过一个或多个空格或Tab字符或回车换行，读取下一个字符。

user: user-3
content: getchar() 大部分情况下是 get 输入后的那个会车，空格啥的

user: user-4
content: 个人认为（通过测试）getchar()这句可有可无。 在某些代码里，加上getchar()是为了获取残留在输入缓存里的回车符，但是下面是用scanf("%s")输入的，如果用gets或fgets，那么这句getchar();是必须的，因为残留在输入缓存里的回车符会直接让第一输入为空串，gets和fgets都是遇到回车符直接退出。
user-0 提问: GCC 编译出现一个.c文件出现 as: unrecognized option '--64'

回复:
user: user-1
content: 你的虚拟机是不是安装了linux64位的系统，结果在VMware把配置改成内存低于了4GB，64位系统支持4Gb内存以上

user: user-0
content: 引用 6 楼 fussier 的回复:把系统能update的都update一下，或者是不是 .bashrc里设置了太多arm-gcc-none-eabi的路径了？ https://stackoverflow.com/questions/42205916/as-unrecognized-option-64   问题解决了 是我不小心在什么时候把环境变量GCC的连接器删除了   .barshrc 文件添加这句话就好了 export PATH=/usr/x86_64-linux-gnu/bin:$PATH

user: user-2
content: 把系统能update的都update一下，或者是不是 .bashrc里设置了太多arm-gcc-none-eabi的路径了？ https://stackoverflow.com/questions/42205916/as-unrecognized-option-64

user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:命令行参数中的--64改为-m64 我试过了  gcc  -m64  hello.c还是不行  但是 预处理 编译 汇编 连接   编译时出现了gcc: warning: scan: linker input file unused because linking not done 这样的错误

user: user-3
content: 引用 2 楼 qq_31019981 的回复:就是一个只打印 hello world 的程序没什么好看的  这个因该是一个编译器选项的问题 那要看你的怎么操作的，这个error提示如果跟代码没关系，那么至少给你编译器环境和你的编译操作有关系。 如果只是提出这样的error信息，而不提供更多有效的提示，除非和你一样遇到这样的问题，否则单纯靠猜测，也不很现实。

user: user-4
content: 命令行参数中的--64改为-m64

user: user-0
content: 就是一个只打印 hello world 的程序没什么好看的  这个因该是一个编译器选项的问题

user: user-3
content: 还是看代码吧
user-0 提问: 新手编一个程序时，循环输出数组是总会输成另一个字符串，求指教

回复:
user: user-1
content: printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方，而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。  在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。 //请今后要用 char c; scanf("%c",&c); //时，都改为 char s[2]; char c; scanf("%1s",s); c=s[0]; //自动跳过一个或多个空格或Tab字符或回车换行，读取下一个字符。
user-0 提问: 阶乘和数问题,想知道我的代码哪里错啦?

回复:
user: user-1

user: user-0
content: 厉害,中间那个while用的太好了

user: user-2
content: #include<stdio.h>  #define     MAX_NUM     10000  long stratum(int x) {     int i, val = 1;     if(x == 0) {         val = 0;          return 0;     }     for(i = 1; i <= x; i++)         val = val * i;     return val; }  int  main() {     int i;     int num, total = 0;      for (i = 1; i < MAX_NUM; i++) {         num = i;          while (num) {             total += stratum(num % 10);             num /= 10;         }          if (total == i) {             printf("%d\t", i);         }         total = 0;     }     putchar(10);      return 0; }
user-0 提问: 求助  可见光室内定位装置

回复:
user: user-1
content: 引用 5 楼 wangwangpengpeng 的回复:电赛题目我也正在想你想出来了吗

user: user-2
content: 这不是大学生电子竞技大赛的题目吗？

user: user-1
content: 各位大神，求解答、、、

user: user-3
content: 期待脑洞大开的那一刻

user: user-4
content: 同问同问同问同问同问

user: user-5
content: 电赛题目我也正在想

user: user-6

user: user-7
content: 百度或百度图片搜相关关键字。

user: user-8
content: 40分就想买个答案，也太容易了
user-0 提问: C 函数调用、头文件声明、编译链接相关问题

回复:
user: user-1
content: 不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！

user: user-0
content: 引用 7 楼 cfjtaishan 的回复:[quote=引用 6 楼 qq_31849783 的回复:] [quote=引用 2 楼 cfjtaishan 的回复:] [quote=引用 1 楼 qq_38204686 的回复:] 你把fun放下面试试 为啥非得放main上面 楼主是两个源文件：b.c放func函数定义，test.c是main的定义和调用func函数。不是在一个源文件里。 楼主的这个问题，func函数本身就是定义和声明。在编译的时候应该是编译b.c在test.c前，就类似func在main函数前定义。 个人见解，欢迎指正。[/quote]  应该是编译的问题，你运行这个程序了没有，什么结果？[/quote] 这个程序不复杂，输入两个值，得到是这两个值的和。 [/quote]  我的意思是你按照我那样做，程序是不是也能正常运行，我想看看你们的都是什么情况

user: user-2
content: 引用 6 楼 qq_31849783 的回复:[quote=引用 2 楼 cfjtaishan 的回复:] [quote=引用 1 楼 qq_38204686 的回复:] 你把fun放下面试试 为啥非得放main上面 楼主是两个源文件：b.c放func函数定义，test.c是main的定义和调用func函数。不是在一个源文件里。 楼主的这个问题，func函数本身就是定义和声明。在编译的时候应该是编译b.c在test.c前，就类似func在main函数前定义。 个人见解，欢迎指正。[/quote]  应该是编译的问题，你运行这个程序了没有，什么结果？[/quote] 这个程序不复杂，输入两个值，得到是这两个值的和。

user: user-0
content: 引用 2 楼 cfjtaishan 的回复:[quote=引用 1 楼 qq_38204686 的回复:] 你把fun放下面试试 为啥非得放main上面 楼主是两个源文件：b.c放func函数定义，test.c是main的定义和调用func函数。不是在一个源文件里。 楼主的这个问题，func函数本身就是定义和声明。在编译的时候应该是编译b.c在test.c前，就类似func在main函数前定义。 个人见解，欢迎指正。[/quote]  应该是编译的问题，你运行这个程序了没有，什么结果？

user: user-0
content: 引用 4 楼 shetougong 的回复:如果你之前没有进行fun函数的宏定义应该是运行不成功的，编译阶段会在内核中将每个函数编译成一个号码，在Linux下用nm命令可看到每个函数在编译时的号码。 nm操作    nm+可执行文件名（如 nm   a.out）  那我还是截个图把，看着方便些    用的VS2013，就建了这两个.c文件

user: user-3
content: 楼上很有道理 可能就是编译器的事 我试了一下报错 并不能运行 建议楼主贴出完整代码  大概你的编译器比较高级？

user: user-2
content: 引用 1 楼 qq_38204686 的回复:你把fun放下面试试 为啥非得放main上面 楼主是两个源文件：b.c放func函数定义，test.c是main的定义和调用func函数。不是在一个源文件里。 楼主的这个问题，func函数本身就是定义和声明。在编译的时候应该是编译b.c在test.c前，就类似func在main函数前定义。 个人见解，欢迎指正。

user: user-4
content: 如果你之前没有进行fun函数的宏定义应该是运行不成功的，编译阶段会在内核中将每个函数编译成一个号码，在Linux下用nm命令可看到每个函数在编译时的号码。 nm操作    nm+可执行文件名（如 nm   a.out）

user: user-3
content: 你把fun放下面试试 为啥非得放main上面
user-0 提问: 中文版的C语言

回复:
user: user-1
content: 这样写好吗？？？？

user: user-2
content: 感觉能做出来这个编译器很厉害哟

user: user-3
content: 为什么不出一个梵文版的C语言再去找联合国教科文组织申请非物质文化遗产呢？！

user: user-4
content: 听说过         。

user: user-5
content: 引用 4 楼 zhao4zhong1 的回复:为什么不出一个梵文版的C语言再去找联合国教科文组织申请非物质文化遗产呢？！  就是字符串替换，梵语版的话，换个配置文件就ok了

user: user-6
content: 做出来这个编译器很厉害哟我支持

user: user-7
content: 从前不是有个“易语言”吗？相比C语言进步的地方在哪？

user: user-8
content: 这个有市场吗？做东西应该考虑意义，实用吧 不过，能做出来还是挺厉害的。
user-0 提问: 学C语言后的迷茫？

回复:
user: user-1
content: 不要想太多，你学C语言只是为了学习编程和计算机的基础，并不一定就要用它做什么实际的东西。

user: user-2
content: 计算机组成原理→DOS命令→汇编语言→C语言（不包括C++）、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言（包括C++）、架构……

user: user-3
content: 便底层的开发！比如算法相关、服务器相关等...

user: user-4
content: 相当于盖房子打地基一样

user: user-5
content: 入门，让你知道计算机是干嘛的，怎么运行的，有一个大致的了解。

user: user-6
content: 编程开发的基础，攻城狮的语言，程序猿的饭碗。

user: user-7
content: C语言一般作为学习程序设计的第一门语言，可以学习程序设计的基本逻辑，以及C系语言（C、C++、C#、Java等）的基本语法，学好C语言就是打下了良好基础，然后看你以后想做什么，比如做游戏，可以进一步学习C++，做桌面客户端软件，可以学习C++或者C#，做Web应用，可以学习Java或者C#，等等。

user: user-8
content: C语言主要是偏底层，比如驱动；另外，就是后台，做后台的开发也可以用C。 嵌入式方向，是C语言的专项。
user-0 提问: 新人求助

回复:
user: user-1
content: 输入的逗号是不是中文里的逗号？注意将输入法切换至英文。 先保证你的输入数据都写到内存的a,b,c变量里了。建议在scanf后面将3个变量值打印出来。

user: user-0

user: user-0
content: [img=https://img-bbs.csdn.net/upload/201708/09/1502275873_696691.png] 为什么还是不对？

user: user-2
content: scanf("%d %d",&a,&b); 格式如上  详情百度

user: user-3
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: scanf的写法不对。
user-0 提问: 求大神看看，为什么这个归并排序运行错误？？？感觉问题出在new和delete的地方，但是不知道为什么？

回复:
user: user-0
content: 没人来看吗？自己顶

user: user-0
content: 大神快来看看啊，折磨了我一下午，clion单步调试有时候能过有时候过不了，好神奇
user-0 提问: 求 c/c++大神帮助

回复:
user: user-1
content: C Bit Fields In addition to declarators for members of a structure or union, a structure declarator can also be a specified number of bits, called a “bit field.” Its length is set off from the declarator for the field name by a colon. A bit field is interpreted as an integral type.   Syntax  struct-declarator :  declarator type-specifier declarator opt : constant-expression  The constant-expression specifies the width of the field in bits. The type-specifier for the declarator must be unsigned int, signed int, or int, and the constant-expression must be a nonnegative integer value. If the value is zero, the declaration has no declarator. Arrays of bit fields, pointers to bit fields, and functions returning bit fields are not allowed. The optional declarator names the bit field. Bit fields can only be declared as part of a structure. The address-of operator (&) cannot be applied to bit-field components.   Unnamed bit fields cannot be referenced, and their contents at run time are unpredictable. They can be used as “dummy” fields, for alignment purposes. An unnamed bit field whose width is specified as 0 guarantees that storage for the member following it in the struct-declaration-list begins on an int boundary.   Bit fields must also be long enough to contain the bit pattern. For example, these two statements are not legal:  short a:17;        /* Illegal! */ int long y:33;     /* Illegal! */  This example defines a two-dimensional array of structures named screen.   struct  {     unsigned short icon : 8;     unsigned short color : 4;     unsigned short underline : 1;     unsigned short blink : 1; } screen[25][80];  The array contains 2,000 elements. Each element is an individual structure containing four bit-field members: icon, color, underline, and blink. The size of each structure is two bytes.  Bit fields have the same semantics as the integer type. This means a bit field is used in expressions in exactly the same way as a variable of the same base type would be used, regardless of how many bits are in the bit field.   Microsoft Specific —>  Bit fields defined as int are treated as signed. A Microsoft extension to the ANSI C standard allows char and long types (both signed and unsigned) for bit fields. Unnamed bit fields with base type long, short, or char (signed or unsigned) force alignment to a boundary appropriate to the base type.  Bit fields are allocated within an integer from least-significant to most-significant bit. In the following code   struct mybitfields {     unsigned short a : 4;     unsigned short b : 5;     unsigned short c : 7; } test;  void main( void ); {     test.a = 2;     test.b = 31;     test.c = 0; }  the bits would be arranged as follows:  00000001 11110010 cccccccb bbbbaaaa  Since the 8086 family of processors stores the low byte of integer values before the high byte, the integer 0x01F2 above would be stored in physical memory as 0xF2 followed by 0x01.  END Microsoft Specific

user: user-2
content: quint32这个是数据类型；crc变量，后面冒号和1，表示变量占1位（32位中的一位），这个值只有两个值（1或0）；
user-0 提问: 我想问一下以后做游戏开发 需要看什么

回复:
user: user-1
content: 引用 2 楼 zhao4zhong1 的回复:Unity3D https://image.baidu.com/search/index?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=detail&fr=&hs=0&xthttps=111111&sf=1&fmq=1502337506715_R&pv=&ic=0&nc=1&z=&se=&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&word=Unity3D

user: user-2
content: 想入坑游戏编程可以先从纯C/C++小游戏开始（比较简单，全部自己代码控制，理解原理，手工作坊），然后过渡到游戏引擎（较大的游戏，美工、逻辑关卡、代码等多人合作，工业化组装）。  仅供参考： 学C++还是C#、Java？  http://blog.163.com/tab_98/blog/static/11924097201511274543737/  用VC的话， Windows游戏程序设计基础 　秦海玉 数据结构课程设计编程实例:基于Win32 API编程 　厉旭杰 游戏开发设计基础教程 　屈喜龙  游戏编程入门 　莫里森  （例子、技术点很不错） 以上几本还可以。 游戏程序设计教程:从游戏引擎构建到实际应用 　万立中 这本书教手动打造一个游戏引擎，包含了游戏有关的Windows程序设计的内容。 游戏设计概论(第4版) 　胡昭民 这本书侧重基础概念和理论。

user: user-1
content: Unity3D

user: user-3
content: 这到开发游戏还有一段很长的历程，建议先将语言基础学好了，从简单的游戏逻辑开始。 现在还是多写，多调，多想和多总结。
user-0 提问: linux c gsoap 接收为循环结构体，请问帮忙看一下如何取值

回复:
user: user-0
content: 引用 1 楼 user-1 的回复：取出body 内容，解析xml感谢，后来直接用gsoap解析出来了

user: user-0
content: 请问gsoap这个怎么取出：   xml如下 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">    <soap:Body>       <ns2:submitResponse xmlns:ns2="http://www.longshine.com/aig">          <return>             <success>true</success>             <dbset>                <r>                   <c n="mobile">                      <value>15210156146</value>                   </c>                   <c n="orgno">                      <value>144010501</value>                   </c>                   <c n="rtncode">                      <value>1000</value>                   </c>                   <c n="rtnmsg">                      <value>执行成功</value>                   </c>                </r>             </dbset>          </return>       </ns2:submitResponse>    </soap:Body> </soap:Envelope>

user: user-1
content: 取出body 内容，解析xml
user-0 提问: 对于仍在 初学 还不会 C 的的 同学......链接：......教程：......

回复:
user: user-1
content: 对于初学者是很好的建议

user: user-2
content: 建议不错  不过适合自己的才是对的

user: user-3

user: user-4
content: 非常感谢，棒棒的。

user: user-5
content: Linux下开发和Windows下开发有不同，编译器也有相应的区别。

user: user-6
content: CSDN就需要这样的好贴，帮忙新人，让国内的程序员队伍越来越大，越来越强！

user: user-7
content: 路过，点个赞

user: user-8
content: 强烈鄙视那些不能看每句C/C++对应汇编指令的C/C++ IDE！ http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素
user-0 提问: rsa_public_encrypt与cipher.doFinal加密结果不一致

回复:
user: user-1
content: 纠正楼主一个概念：加解密的对象是字节数组，不是别的。

user: user-0
content: 现在发现点眉目，在java端对c的“”123“”加密串做解析，发现解析的结果是313233后面跟122个0，而正确的解析结果应该是125个0后面跟123，网上有搜到要在加密串的后面填充'\0'，但是没效果

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-0 提问: 一个简单的C问题

回复:
user: user-1
content: 引用 9 楼 qq_38204686 的回复:‘\0’是c/c++语言中的字符串结束符，在ASCII字符集中对应空字符NULL。--百度百科 你的程序很正确 https://baike.baidu.com/item/%E8%BD%AC%E4%B9%89%E5%AD%97%E7%AC%A6/86397?fr=aladdin '\0'代表空串NULL，但是不能划等号。

user: user-1
content: 引用 8 楼 wyyy2088511 的回复:[quote=引用 5 楼 cfjtaishan 的回复:] [quote=引用 3 楼 wyyy2088511 的回复:] 因为gets在每次读取的时候都会给最后一个字节添加一个0，如果是一个空行的话，只会给第0个字节赋值0，而转义字符‘\0’是NULL，也就是0，所以能够进行判断。 '\0'等于数值0，但是不是NULL吧，类型就不一样。NULL == (void *)0;[/quote]查一下转义字符表就明白了。[/quote] 我的意思，'\0'是空串，但是不能划等号，代码里不能这么写。

user: user-2
content: ‘\0’是c/c++语言中的字符串结束符，在ASCII字符集中对应空字符NULL。--百度百科 你的程序很正确

user: user-3
content: 引用 5 楼 cfjtaishan 的回复:[quote=引用 3 楼 wyyy2088511 的回复:] 因为gets在每次读取的时候都会给最后一个字节添加一个0，如果是一个空行的话，只会给第0个字节赋值0，而转义字符‘\0’是NULL，也就是0，所以能够进行判断。 '\0'等于数值0，但是不是NULL吧，类型就不一样。NULL == (void *)0;[/quote]查一下转义字符表就明白了。

user: user-3
content: http://blog.csdn.net/wyyy2088511/article/details/76887993

user: user-4
content: 引用 1 楼 ebailixi 的回复:number[0]是你往number里输入的第一个字符，而`\0`就是空格的的意思，所以当第一个字符你敲空格时，退出循环，退出来了。'\0' 不是空格

user: user-1
content: 引用 3 楼 wyyy2088511 的回复:因为gets在每次读取的时候都会给最后一个字节添加一个0，如果是一个空行的话，只会给第0个字节赋值0，而转义字符‘\0’是NULL，也就是0，所以能够进行判断。 '\0'等于数值0，但是不是NULL吧，类型就不一样。NULL == (void *)0;

user: user-1
content: 引用 1 楼 ebailixi 的回复:number[0]是你往number里输入的第一个字符，而`\0`就是空格的的意思，所以当第一个字符你敲空格时，退出循环，退出来了。 '\0'不是空格哦，它是字符串结束标记。如果number[0]为'\0'，那么它就是空行，即没有有效的字符在number缓存里。 空格是属于有效字符的。

user: user-3
content: 因为gets在每次读取的时候都会给最后一个字节添加一个0，如果是一个空行的话，只会给第0个字节赋值0，而转义字符‘\0’是NULL，也就是0，所以能够进行判断。

user: user-1
content: 如果等于'\0'，那么就是没有字符输入到缓冲区number里

user: user-5
content: number[0]是你往number里输入的第一个字符，而`\0`就是空格的的意思，所以当第一个字符你敲空格时，退出循环，退出来了。

user: user-6
content: while(gets(number)&&number[0] != '\n') 这样，敲一个回车就可以退出了

user: user-2
content: 引用 11 楼 cfjtaishan 的回复:[quote=引用 9 楼 qq_38204686 的回复:] ‘\0’是c/c++语言中的字符串结束符，在ASCII字符集中对应空字符NULL。--百度百科 你的程序很正确 https://baike.baidu.com/item/%E8%BD%AC%E4%B9%89%E5%AD%97%E7%AC%A6/86397?fr=aladdin '\0'代表空串NULL，但是不能划等号。[/quote] 谢谢 确实不是一样的  但是对于字符串来说都可以判断是否为空
user-0 提问: 基于51单片机的温湿度DHTII的采集

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

user: user-2
content: 额，提示没有函数原型，这个函数你有没有定义，然后有没有去实现，或者说头文件不在一个文件里，是不是要extern声明一下？
user-0 提问: 请大侠帮我分析下程序的功能

回复:
user: user-1
content: 程序的功能应该是将数组a中的元素从大到小排列。但是程序里面有些错误，所以未能达到从大到小排列的效果。 1程序修改 #include "stdafx.h" #include<stdio.h>  int main() { 	int a[] = { 4,0,2,3,1 }, i, j, t; 	for (i = 1; i<5; i++) 	{ 		t = a[i];  		j = i - 1; 		while (j >= 0 && t>a[j]);//去掉该分号 		{  			a[j + 1] = a[j];  			j--; 			a[j + 1] = t; 		} 	} 	for (i = 0; i < 5; i++) 	{ 		printf("a[%d]=%d  ", i, a[i]); 	}//原先代码中i的值是5，已经越界     return 0; } 以下是输入效果  2 程序分析 这个程序可以看成是“从后向前冒泡”。假设有一个数组a[3] = {0, 1,2}，第一步比较a[1]和a[0]，如果a[1]>a[0]，则将a[0]与a[1]进行交换；第二步比较a[2]和a[1]，如果a[2]大于a[1]，则a[2]与a[1]交换，第三步比较a[1]和a[0]，如果a[1]大于a[0]，则a[1]与a[0]交换。  以下为程序的流程图

user: user-2
content: 请无视我

user: user-2
content: 插入排序，a[j+1]=t;要在while循环外面

user: user-3
content: 应该是将数组倒序排序，输出最小的数； 但是 while后面多了分号，a[i]也越界了

user: user-1
content: 一个关于for循环语句的小文章 http://blog.csdn.net/hou09tian/article/details/77001685 请多指教

user: user-4
content: 像一个排序的程序 还是测试的程序？

user: user-5
content: printf("%d",a[i]);，i已经是5，已经越界，打印是一个未知数

user: user-6
content: 两个问题，1, while循环后多一个分号; 2.for循环之后，i的值为5，a[i]已经越界了。
user-0 提问: 求大佬解答，到底哪里出错了

回复:
user: user-1
content: 同意1楼                                   。

user: user-2
content: VS2015+Windows10 64位测试没问题啊

user: user-3
content: 哪里错了 我觉着还蛮好的...

user: user-4
content: 输入0 输出？

user: user-5
content: 读入自然数，你输的1234567890987654321123456789，是字符形式吧
user-0 提问: c语言中如何实现换行数据标准输入输出？

回复:
user: user-1
content: printf（'\n');  就表示输出换号

user: user-2
content: 在程序循环判定不是最后一次加个printf（'\n');

user: user-3
content: 实现换行，可以再每一行判定完之后输出换行，两层for循环，内部for循环查找每一行中最大数，循环外部（内部循环的外部）输出数和换行

user: user-4
content: 定义一个二维数组，将此问题转换为求每行（二维数组）的最大值。

user: user-5
content: 最大值的问题，自己动手写写
user-0 提问: libusb-win32  获取设备数据，运行一段时间之后，命令通道和数据通道都断了

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

user: user-0
content: 来人求助
user-0 提问: 请问sprintf函数的用法？2个参数？

回复:
user: user-1
content: pstBoxInfo->aucFavReName[ iIndex ] 内容 赋给 pcCorrectString指向的内存

user: user-2
content: VS IDE中，在不明白的符号上点鼠标右键，选转到定义。

user: user-0
content: 引用 1 楼 cfjtaishan 的回复:sprintf和printf是很类似的。不同的地方是，printf是将数据以第一个参数的格式输出到终端。而sprintf是以某种格式输出到缓存（第一个参数）里。   那这里是什么意思，没有第三个参数，假如第二个参数是数组的首地址，是什么意思呢？谢谢

user: user-3
content: sprintf和printf是很类似的。不同的地方是，printf是将数据以第一个参数的格式输出到终端。而sprintf是以某种格式输出到缓存（第一个参数）里。

user: user-4
content: int sprintf( char *buffer, const char *format, [ argument] … ); 只有最后一个参数是可选的 buffer：char型指针，指向将要写入的字符串的缓冲区。 format：char型指针，指向的内存里面存放的将要格式字符串。 [argument]...：可选参数，可以是任何类型的数据。 也就是说只有俩个参数的话   第一个参数pcCorrectString指向一块内存 第二个参数应该放的是格式字符串 指明是什么格式的

user: user-3
content: 引用 2 楼 hushiganghu 的回复:[quote=引用 1 楼 cfjtaishan 的回复:] sprintf和printf是很类似的。不同的地方是，printf是将数据以第一个参数的格式输出到终端。而sprintf是以某种格式输出到缓存（第一个参数）里。   那这里是什么意思，没有第三个参数，假如第二个参数是数组的首地址，是什么意思呢？谢谢[/quote] 没见过你这样使用sprintf的，建议从网上搜一下这个库函数原型。
user-0 提问: 贪吃蛇求助帖，帮忙看下问题

回复:
user: user-1
content: 贪吃蛇，一个新的开始，知道自己不会了。

user: user-2
content: 这个需要分析和调试代码，要花费很长时间，在线通过帖子上询问，有可能没有人会花时间去分析，帮你解答。  需要你自己分析具体哪个函数不符合你预期，去调试代码。  这个链接下还有一个更高级的实现，可以参考下： http://www.oschina.net/code/snippet_261347_26002

user: user-3
content: 《Visual C++ 游戏开发经典案例详解》

user: user-3
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。
user-0 提问: 求助帖

回复:
user: user-1
content: scanf 是省略参数，所以编意不会出错

user: user-2
content: 引用 6 楼 wzyanhaianbenpao 的回复:明白了，是scanf中的双引号用错了位置，但是为什么前面不报错呢？ 可能报的是警告，警告建议也不要放过。

user: user-3
content: printf里面的%和变量的一一对应关系 scanf里面的%和变量以及变量前加不加&的一一对应关系 是C代码中非常容易出错的地方，而且通常编译还不出错。 所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

user: user-3
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: scanf("%f, &score"); ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ scanf("%f", &score);

user: user-0
content: 明白了，是scanf中的双引号用错了位置，但是为什么前面不报错呢？

user: user-0
content: # include <stdio.h>  int main(void) { 	float score;//score 分数  	printf("请输入您的考试成绩："); 	scanf("%f, &score");  	if (score > 100) 		printf("这是做梦！\n"); 	else if (score >= 90 && score <= 100)//能写成90<=score<=100 		printf("优秀！\n"); 	else if (score >= 80 && score < 90) 		printf("良好！\n"); 	else if (score >= 60 && score < 80) 		printf("及格！\n"); 	else if (score >= 0 && score < 60) 		printf("不及格！\n"); 	else 		printf("您输入的分数过低，不予显示等级！\n");  	return 0; }

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

user: user-3
content: 在每个最后不带\n的printf后面加fflush(stdout); 在每个不想受接收缓冲区旧内容影响的scanf前面加rewind(stdin); 另外请检查scanf的返回值。 //请今后要用 char c; scanf("%c",&c); //时，都改为 char s[2]; char c; scanf("%1s",s); c=s[0]; //自动跳过一个或多个空格或Tab字符或回车换行，读取下一个字符。

user: user-2
content: 怀疑是代码的问题。所以，还得看代码

user: user-1
content: 代码看不见，不知道啥问题！
user-0 提问: C语言 数据的存储与查询

回复:
user: user-1
content: 只有触发和未触发两种状态可以用位存储呗， 1表示触发，0表示未触发。优先级越高位数越大，用与或等位运算来存储和查询

user: user-0
content: 多谢指点！！

user: user-2
content: 二维数组。或者链表
user-0 提问: 求解  cgi 编辑HTML上传文件 cgiFormFileOpen返回值cgiFormIO

回复:
user: user-1
content: char b[100000] = { 0 }; char k[100000] = { 0 }; char m[100000] = { 0 }; char g[100000] = { 0 }; 每行前面都加static 试试。  在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常运行的问题。

user: user-0
content: 引用 3 楼 赵4老师的回复:char b[100000] = { 0 }; char k[100000] = { 0 }; char m[100000] = { 0 }; char g[100000] = { 0 }; 每行前面都加static 试试。  在占用内存空间较大的局部数组声明的前面加static将其从堆栈数据段挪到全局数据段即可避开因局部数组大小超过默认堆栈大小1MB造成程序不能正常运行的问题。 函数里使用时都不会超过20个字符，为什么这里必须要定义字符数组b k m g长度100000。正常我定义成charb[20]就够了吧！为什么这里不行呢？

user: user-1
content: 百度搜相关关键字。

user: user-0
content: 引用 1 楼 赵4老师的回复:百度搜相关关键字。 百度没解决好才上论坛，在如鹏网视频学的，代码一样敲出来，就是运行不了
user-0 提问: c语言新手求助！二维数组循环少一个

回复:
user: user-0
content: 我已经明白了。。多谢各位

user: user-1
content: 最好把所有代码都贴出来。一步一步调就确认了。

user: user-2
content: 你这代码是怎么读取n个字符串的

user: user-3
content: s_gets编译不过，写到函数和写到main应该是没有区别的。

user: user-4
content: 从这段代码看不出什么问题，建议提供更多的信息。比如测试输入的数据，其他调用和被调用的函数代码。

user: user-5
content: 我感觉这和写到哪里没关系 你这个代码我也看不出来什么 你可以一步一步的调试一下 看看里面的值是如何变化的

user: user-6
content: 你还是把你整个代码贴出来吧
user-0 提问: C语言的问题求解决

回复:
user: user-1
content: 可以用*name去接受参数，  char *name 和 char name[12]  的效果是一样的，，前者在有些情况下需要分配内存，但在作为形参是不需要，编译器会做处理，，知道name的大小，，char name[]  也可以接受实参，数组就是指针。

user: user-2
content: 函数少了个{。

user: user-3
content: 打开文件。还需要close啊

user: user-4
content: 可以直接接收main函数里name

user: user-5
content: 这样写不对吧，FILE*是在栈区创建的，当file_open  执行完毕，函数的活动记录会被清除。你要是非要这么写那就用unique_ptr。
user-0 提问: C语言代码分析，运行结果出错。

回复:
user: user-1
content: for (iIndex = 0; cString[iIndex] = '\0'; iIndex++)   你把所有的字符都等于\0了，应该是for (iIndex = 0; cString[iIndex] = ='\0'; iIndex++)

user: user-2
content: for (iIndex = 0; cString[iIndex] = '\0'; iIndex++) 这个循环可以结束吗？  改为： for（iIndex = 0; cString[iIndex] ; iIndex++）

user: user-3
content: #include <stdio.h>  int main() {     char cString[100];     int iIndex,iWord=1;     char cBlank;     //gets_s(cString, 20);     gets(cString);      if (cString[0] == '\0')     {         printf("There is no char!\n");     }     else if (cString[0] == ' ')     {         printf("First char just is a blank!\n");     }     else     {         for (iIndex = 0; cString[iIndex] != '\0'; iIndex++)         {             cBlank = cString[iIndex];             if (cBlank ==' ')             {                 iWord++ ;             }         }         printf("%d\n",iWord);     }     return 0; } 注意这句： for (iIndex = 0; cString[iIndex] != '\0'; iIndex++)

user: user-4
content: cString[iIndex] = '\0'赋值语句，不是判断语句

user: user-5
content: for (iIndex = 0; cString[iIndex] = '\0'; iIndex++) 循环条件你错了，‘\0’是行尾结束符，所以应该改成!=

user: user-0
content: for(  iIndex=0;   cString[iIndex] =='\0';  iIndex++) 改为 for(  iIndex=0;   cString[iIndex] !='\0';  iIndex++)
user-0 提问: 大端存储的数据如何按小端读出来？（或者反之）

回复:
user: user-0
content: 如2楼和6楼所示， 最终思路为按字节（unsigned char）读取， 若是Int进行移位操作即可。 float型可先读成int，然后按照下面两条语句转为float float float_; *((int*)&float_) = int_num; float_即为想要的值。

user: user-1
content: htonl,htons, ntohl, ntohs, WSAHtonl, WSAHtons, WSANtohl, WSANtohs

user: user-2
content: 从文件里不能直接转换之后读取，建议先将其读到内存里，然后在转换。比如short类型读到内存，然后再将两个字节转换一下。 u16 a = (a <<8) | (a >> 8);

user: user-3
content: 如一楼所述，大小端转换。

user: user-4
content: 刚学不就，不知道这样做对不对，一个字节一个字节读，然后移位 int a,b; int c; fread(&a, 1, 1, fp);   //0x57 fread(&b, 1, 1, fp);  //0x1f c ＝ (b << 4) | a;    //0x1f57

user: user-5
content: 如果是四字节的整数倍，把第一和第四字节转换，把第二个字节和第三个字节转换
user-0 提问: 数据结构链表

回复:
user: user-1
content: 数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

user: user-2
content: #include<stdio.h> #include<stdlib.h> #include<string.h>  struct node {     int num;     char name[20];     struct node *next; };  struct node *create_singly_link(int num) {     struct node *head, *prev, *cur;     int i;      head = NULL;     for(i = 0; i < num; i++) {         cur = (struct node *)malloc(sizeof(struct node));         if (!cur) {             printf("Malloc error!");             return NULL;         }         cur->next = NULL;         cur->num = i+1;         snprintf(cur->name, 20-1, "%c", 'A'+i);         if (!head) {             head = cur;             prev = cur;         } else {             prev->next = cur;             prev = prev->next;         }     }     prev->next = head;     return head; }  static void test_print(struct node *phead) {     struct node *pcur = phead->next;      printf("num = %d\t name = %s\n", phead->num, phead->name);     while (pcur != phead) {         printf("num = %2d\t name = %s\n", pcur->num, pcur->name);         pcur = pcur->next;     } }  int output( struct node *head, int start, int step, int total) {     struct node *p, *q;     int count = 0;     int num = 0, i;      q = head;      for(i = 0; i < start; i++)         q = q->next;      while(count < total-1) {         p = q->next;         num++;         if(!(num % step)) {             q->next = p->next;             printf("%s\n", p->name);             free(p);             count++;         } else {             q = p;         }     }     printf("num = %d\t, name = %s\n", q->num, q->name);     free(q);      return 0; } int main(int argc, const char *argv[]) {     int total, step, start;     struct node *head;      printf("Please input total test number: ");     scanf("%d", &total);     head = create_singly_link(total);     test_print(head);      printf("Please input start position and steps: ");     scanf("%d%d", &start, &step);      output(head, start, step, total);      return 0; } 建议使用单项循环链表，这样容易计算M； 上面的代码作为一个参考吧

user: user-3
content: 无头环链会不会容易点
user-0 提问: 一个输出单词数量的程序，运行不了，求大神。

回复:
user: user-0
content: 引用 1 楼 T20091 的回复:c = getchar() != STOP 这里有个优先级的问题，修改成 (c = getchar()) != STOP 原来是这样，擦。。。明白了，谢谢大佬！

user: user-1

user: user-2
content: c = getchar() != STOP 这里有个优先级的问题，修改成 (c = getchar()) != STOP
user-0 提问: 遇到一个很不科学的问题,感觉毫无破绽，但是出错了，请大佬们进来看看！

回复:
user: user-0
content: 应该就是野指针的问题 见笑了。。

user: user-0
content: 是不是因为第三个里面的*p是个野指针，不能直接用在fgets里？我把p指向一个字符数组后就能正常运行了。 但是为什么第二个里面的*p就没问题？能运行
user-0 提问: 求求大神看看我这个程序哪里有问题

回复:
user: user-1
content: #include "stdafx.h" #include<iostream> #include<cmath> using namespace std; int main() { 	int x; 	cout << "请输入一个整数：" << endl; 	cin >> x;  	int temp = x; 	int new_int = 0; 	int n = 0; 	int x0 = 0;  	while (temp!=0) 	{ 		x0 = temp % 10; 		new_int += x0*pow(10, n); 		temp = temp / 100; 		n++; 	}  	cout << x << '\t' << new_int << endl;     return 0; }

user: user-2
content: #include<stdio.h> #include<math.h> int main(void) {  int x,i,k=0; int n=0; int a[10];  printf("输入一个数："); scanf("%d",&x); while(x!=0) { 	    a[n]=x%10;         x=x/10;         n++;  }  n--; for(i=n;i>=0;i-=2)     printf("%d",a[i]); }

user: user-3
content: 奇数位，怎么理解。最好举个例子

user: user-4
content: 或者： 1：1 21：2 321：31 4321：42 54321：531 987654321：97531 675429879：65289

user: user-4
content: 1：1 21：1 321：31 4321：31 54321：531 987654321：97531 675429879：65289
user-0 提问: 咨询一个问题，关于linux下glib2.22中unlinkat函数的定义

回复:
user: user-0
content: 引用 7 楼 zhao4zhong1 的回复:[quote=引用 6 楼 feekee 的回复:] 我汗啊，还是让愿意解决问题的人来解决吧  怎么比喻呢，咱们离得太远了，我都看不清您要表达什么，也不明白你的意思。。 我的意思是要你尊重自己眼前的事实，鄙视别人对他自己过去事实的描述。[/quote] 好吧，就是事实与我原来的认知不一致，才有此提问的 不过平常与人讨论的少，所以往往一下子发出来很多东西，别人也看不明白到底是什么意思

user: user-0
content: 这个问题描述的不太好，可能问的不太清楚  ： 我在学习rm的实现，最终找到了是unlinkat()函数对对象进行删除，函数调用如上面帖子中的贴图。明显，这应该是个函数调用；但是我man unlinkat()的时候，看到手册里说unlinkat是个系统调用。所以，想问一下各位大大，系统调用的使用是不是也类似glibc中的fopen、fread等函数，在c程序中可以直接使用（排除内联汇编的情况）?  以及，该页man里面写到2.4版本的glibc才增加了unlinkat库，怎么我的glibc是 2.22中就有了，而且还在相应linux发行版的coreutils的rm实现中直接就使用了？要么只可能是这个发行版下安装的man手册不同步，请各位对开源软件的版本和发展比较了解的老大们帮忙解释一下，多谢

user: user-1
content: 引用 6 楼 feekee 的回复:我汗啊，还是让愿意解决问题的人来解决吧  怎么比喻呢，咱们离得太远了，我都看不清您要表达什么，也不明白你的意思。。 我的意思是要你尊重自己眼前的事实，鄙视别人对他自己过去事实的描述。

user: user-0
content: 我汗啊，还是让愿意解决问题的人来解决吧  怎么比喻呢，咱们离得太远了，我都看不清您要表达什么，也不明白你的意思。。

user: user-1
content: 任何问题首先是一个哲学问题。

user: user-0
content: 楼上您好， 如果您发现我的内容哪里不对或者有问题，请及早告诉我 您发这些虚无缥缈的说法，有嘛用啊  再说了，上面这个帖是不是有推广博客的嫌疑……？

user: user-1
content: 不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！

user: user-1
content: 程序员之“盲人摸太阳 http://blog.sina.com.cn/s/blog_72a61f2f01015l9l.html

user: user-0
content: 我倒，楼上怎么回答了一个口号啊， 忽然想起来，最后少了一个说明coreutils中unlinkat调用的截图，这样大家可能不知道在说什么  这个是对rm进行追踪找到的最后删除文件时的代码  PS楼上大大：就是看到了事实，然后理论上有些想不通~
user-0 提问: C程序字符问题

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

user: user-1
content: 不要使用 while (条件) 更不要使用 while (组合条件) 要使用 while (1) {  if (条件1) break;  //...  if (条件2) continue;  //...  if (条件3) return;  //... } 因为前两种写法在语言表达意思的层面上有二义性，只有第三种才忠实反映了程序流的实际情况。 典型如： 下面两段的语义都是当文件未结束时读字符 while (!feof(f)) {  a=fgetc(f);  //...  b=fgetc(f);//可能此时已经feof了！  //... } 而这样写就没有问题： while (1) {  a=fgetc(f);  if (feof(f)) break;  //...  b=fgetc(f);  if (feof(f)) break;  //... } 类似的例子还可以举很多。

user: user-2
content: 注意优先级的问题 cha = getchar() && (!isblank(cha)) 赋值优先级是最低的。所以要加上括号； while (((cha = getchar) && (!isblank(cha))) && i < n) 不如直接改成这样：  while ((!isblank(cha = getchar())) && i < n)
user-0 提问: c   求指教

回复:
user: user-1
content: c=s[j} ; s[j]=s[i]; s[i]=c; 作用是调换数组内两个元素的位置，缺一不可，不是你说的可有可无。 如果少了c=s[j]和s[i]=c，互换过程中没了数据缓存，互换的两个元素必然会丢失一个，而且的到的结果必定是对称的。 比如这个例子：-25经过while循环后，s= ‘5’，‘2’，‘-’，‘\0’。for循环就是要翻转前三个字节的顺序。 第一步，j和I分别指向‘5’和‘-’，如果没有c的存在，只执行s[j]=s[I]; 结果‘5’丢失，s=‘-’，‘2’，‘-’，‘\0' 第二步，j和I不满足循环条件，退出。 所以，所以，所以。。。已经很详细了。。。我是有多无聊。。。

user: user-2
content: c=s[j]和s[i]=c，这个是交换参数的常见形式。。。没有这个，你怎么交换参数，我没看代码，不知道是否能帮上你

user: user-0
content: 引用 4 楼 katie3000 的回复:c=s[j} ; s[j]=s[i]; s[i]=c; 作用是调换数组内两个元素的位置，缺一不可，不是你说的可有可无。 如果少了c=s[j]和s[i]=c，互换过程中没了数据缓存，互换的两个元素必然会丢失一个，而且的到的结果必定是对称的。 比如这个例子：-25经过while循环后，s= ‘5’，‘2’，‘-’，‘\0’。for循环就是要翻转前三个字节的顺序。 第一步，j和I分别指向‘5’和‘-’，如果没有c的存在，只执行s[j]=s[I]; 结果‘5’丢失，s=‘-’，‘2’，‘-’，‘\0' 第二步，j和I不满足循环条件，退出。 所以，所以，所以。。。已经很详细了。。。我是有多无聊。。。 非常感谢楼主耐心详细的讲解，以后多指教

user: user-0
content: 引用 3 楼 L1171274211 的回复:c=s[j]和s[i]=c，这个是交换参数的常见形式。。。没有这个，你怎么交换参数，我没看代码，不知道是否能帮上你 懂了，谢谢

user: user-0
content: ，，，，，能

user: user-3
content: 你确定你的代码能通过编译？？？
user-0 提问: 求教一道跟scanf有关的小问题

回复:
user: user-1
content: 引用 4 楼 dawangguotie 的回复:我定义了整数   [quote=引用 3 楼 cfjtaishan 的回复:] [quote=引用 2 楼 dawangguotie 的回复:] 是实数   [quote=引用 1 楼 cfjtaishan 的回复:] 所有的什么数？应该不是实数吧  scanf("%d%d", &a, &b); if (a < b)      for (i = a; i < b; i++)         printf("%d ", i); [/quote] 那你得说明精确到多少位，不然会有太多了，（理论上是无穷的）[/quote][/quote] 定义整数了，但是你要求的是整数之间的实数，实数是有精确多少位的

user: user-2
content: 树上10只鸟，打死一只还剩几只？看看程序员是怎么思考的： http://www.kuqin.com/algorithm/20111230/316933.html

user: user-2
content: 啥叫整数？12345678901234567890123456789012345678901234567890123456789012345678901234567890是整数吗？

user: user-2
content: 啥叫两个整数之间的所有数？ 啥叫两个整数之间的所有整数？

user: user-0
content: 我定义了整数   引用 3 楼 cfjtaishan 的回复:[quote=引用 2 楼 dawangguotie 的回复:] 是实数   [quote=引用 1 楼 cfjtaishan 的回复:] 所有的什么数？应该不是实数吧  scanf("%d%d", &a, &b); if (a < b)      for (i = a; i < b; i++)         printf("%d ", i); [/quote] 那你得说明精确到多少位，不然会有太多了，（理论上是无穷的）[/quote]

user: user-1
content: 引用 2 楼 dawangguotie 的回复:是实数   [quote=引用 1 楼 cfjtaishan 的回复:] 所有的什么数？应该不是实数吧  scanf("%d%d", &a, &b); if (a < b)      for (i = a; i < b; i++)         printf("%d ", i); [/quote] 那你得说明精确到多少位，不然会有太多了，（理论上是无穷的）

user: user-0
content: 是实数   引用 1 楼 cfjtaishan 的回复:所有的什么数？应该不是实数吧  scanf("%d%d", &a, &b); if (a < b)      for (i = a; i < b; i++)         printf("%d ", i);

user: user-1
content: 所有的什么数？应该不是实数吧  scanf("%d%d", &a, &b); if (a < b)      for (i = a; i < b; i++)         printf("%d ", i);
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: user-2
content: 多出来的是gbk增加的
user-0 提问: 简单的指针赋值

回复:
user: user-1
content: cout<<。。。。 相当于 cout.operator<<(..........)

user: user-0
content: 问题已经找到，我的程序在cout后还有一句*(pArray +row*n + col) = *(res+row*n + col);从而影响了cout输出，可问题是我的cout在该句前边，怎么还会影响cout输出呢？

user: user-0
content: 不好意思，上边index[2] = {1,0};

user: user-0
content: 引用 楼主 linzertling 的回复:	unsigned int * res = (unsigned int*)malloc(4*sizeof(unsigned int)); 	for(int row = 0; row < m; row++){ 		for(int col = 0; col < n; col++){ 			*(res + row*n + col) = pArray[index[row]*n + col]; 			cout << *(res + row*n + col) << endl; 		} 	} 代码片段如上，pArray[2][2] = {{1,2},{3,1}};正常输出的res应该是 {{3,1}，{1,2}}，但是结果却是 {{3,1},{3,1}}，求大神指教！index[2] = {1,2},这个确定没问题，而且我把循环中改为cout << pArray[index[row]*n + col] << endl就能正常输出3,1,1,2，太诡异了

user: user-2
content: unsigned int * res = (unsigned int*)malloc(4*sizeof(unsigned int));     for(row = 0; row < m; row++){         for(col = 0; col < n; col++){             *(res + row*n + col) = pArray[row][col];             cout << *(res + row*n + col) << endl;         }     } 这样做是没问题的。建议查一下index问题。尤其是这个表达式： pArray[index[row]*n + col]
user-0 提问: sscanf 写入的字符串为空

回复:
user: user-1
content: 一个指针没有指向一个空地址

user: user-2
content: 不应该出现两个字符串是NULL的情况，因为两个字符串是数组，数组名不能作为左值，怎么会指向NULL呢 反而word_sec是一个野指针，不能直接使用，需要给其申请空间，或者令其指向一个可读可写的有效内存空间；  #include <stdio.h> #include <stdlib.h>   int main(void) {     char cmd[100];     char word_fir[10], word_third[10];     int *word_sec = (int *)malloc(sizeof(int));      gets(cmd);      sscanf(cmd, "%s %d %s", word_fir, word_sec, word_third);      printf("%s %d %s\n", word_fir, *word_sec, word_third);      return 0; }

user: user-3
content: #include <stdio.h> char word_fir[10], word_third[10]; int word_sec; char cmd[100]; int main() {     gets(cmd);     sscanf(cmd, "%s %d %s", word_fir, &word_sec, word_third);     printf("word_fir:[%s]\nword_sec:%d\nword_third:[%s]",word_fir, word_sec, word_third);     return 0; } //mode 20 upper //word_fir:[mode] //word_sec:20 //word_third:[upper]
user-0 提问: 求助，折半法排序的一些问题！

回复:
user: user-1
content: 快速排序思想吗？

user: user-0
content: int main() { int i,a[10]; ...... CelerityRun(0,9,a); ...... return 0； } void CelerityRun(int left,int right,int array[]) { int i,j ; int middle,iTemp; i=left; j=right; middle=array[(left+right)/2]; /*求中间值*/ do { while((array[i]<middle)&&(i<right)) /*从左找小于中值得数*/ i++; while((array[j]>middle)&&(j>left)) /*从右找小于中值得数*/ j--; if(i<=j) /*找到的数进行交换*/ { iTemp=array[i]; array[i]=array[j]; array[j]=iTemp; i++; j--; } }while(i<=j); /*如果两边的下标交错，就停止（完成一次）*/ /*递归左半边*/ if(left<j) CelerityRun(left,j,array) /*递归右半边*/ if(right>i); CelerityRun(left,j,array) }
user-0 提问: C语言磁强计椭球面校准时采集数据量编码

回复:
user: user-0
content: 您好，我有点不懂啊  我采集的数据是一个二维的数据，也就是X轴与Y轴一一对应的，也就是要每个相像采集20个数，4个相像对应就是80个，这样我就好拟合椭圆面了。您这个函数是怎么操作的了，能具体说一下吗

user: user-0
content: 您好，我有点不懂啊  我采集的数据是一个二维的数据，也就是X轴与Y轴一一对应的，也就是要每个相像采集20个数，4个相像对应就是80个，这样我就好拟合椭圆面了。您这个函数是怎么操作的了，能具体说一下吗

user: user-1
content: 仅供参考：/****************************************************************************** *return 0: 采样点不满足校准要求 *return 1: 校准完成 * ******************************************************************************/ static uint8_t auto_exit_revise_deal(uint8_t* data_buff) {    int16_t sample_x,sample_y,sample_z;   int16_t scale_x,scale_y;     sample_x = (int16_t)((*(data_buff+0) +(*(data_buff+1)<<8))) ;   sample_y = (int16_t)((*(data_buff+2) +(*(data_buff+3)<<8)));   sample_z = (int16_t)((*(data_buff+4) +(*(data_buff+5)<<8)));    scale_x = (int16_t) (sample_x - circle_center_x0);   scale_y = (int16_t) (sample_y - circle_center_y0);   if(scale_x > 0 && scale_y > 0)     quad_rec.quad_1 = quad_rec.quad_1 + 1;   else if(scale_x < 0 && scale_y > 0)     quad_rec.quad_2 = quad_rec.quad_2 + 1;   else if(scale_x < 0 && scale_y < 0)     quad_rec.quad_3 = quad_rec.quad_3 + 1;   else if(scale_x > 0 && scale_y < 0)     quad_rec.quad_4 = quad_rec.quad_4 + 1;    if((quad_rec.quad_1 >= used_thresh) &&      (quad_rec.quad_2 >= used_thresh) &&        (quad_rec.quad_3 >= used_thresh) &&          (quad_rec.quad_4 >= used_thresh) )   {     quad_thresh_reach_flag = true;     return 1;   }   else if(quad_rec.quad_1 +quad_rec.quad_2+quad_rec.quad_3+quad_rec.quad_4 >= used_thresh*4*4)   {     quad_thresh_reach_flag = true;     return 1;   }   else     return 0; } static uint8_t revise_many_times(int16_t times) {     int count;      count=0;     while (1) {         //...         if (1==auto_exit_revise_deal(data_buf)) count++;     }     if (count>=times) return 1; }     //...     revise_many_times(20);     //...

user: user-0
content: 自己顶一下,，麻烦了
user-0 提问: 大神帮我看一下程序出错原因

回复:
user: user-1
content: 输入没有不用\n

user: user-2
content: #include<stdio.h>  int main() {     int a,i;     printf("请输入一个数:");     scanf("%d", &a);    /*remove '\n'*/     printf("%d=", a);     for(i=2;i<=a;i++)     {         while(a%i==0)         {             printf("%d",i);             a/=i;             if(a!=1)                 printf("*");         }     }     printf("\n");     return 0; }
user-0 提问: NtSetInformationProcess和NtSetInformationThread有上层的调用函数吗？

回复:
user: user-0
content: 引用 1 楼 zhao4zhong1 的回复:设断点到该函数中，命中后看调用堆栈即可得到谁在哪里调用了该函数。 这种都没有文献说明吗？我知道deletefile会调用NtDeletefile，但是我怎么反推呢？没有样本，我怎么NtDeletefile可能会被deletefile调用，是这个意思

user: user-1
content: 不要迷信书、考题、老师、回帖； 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实！

user: user-2
content: 这个可能得去问微软，或者你写个？

user: user-1
content: 设断点到该函数中，命中后看调用堆栈即可得到谁在哪里调用了该函数。