Mxode/CSDN-C_Language-2013_2023 huggingface dataset:
user-0 提问: 视频字幕问题

回复:
user: user-1
content: 视频是用win media player 控件做的，现在想求视频流里时间的获取，和字幕同步的方法，求指导

user: user-2
content: 引用 3 楼 xubbwd 的回复:视频流里面是有时间戳的，你可以把两个时间来做一下同步就可以了。  你是用的什么视频，什么格式的？  看看文档

user: user-3
content: 视频流里面是有时间戳的，你可以把两个时间来做一下同步就可以了。  你是用的什么视频，什么格式的？

user: user-4
content: 你读的文件里面会有时间信息的，把时间信息提出来

user: user-5
content: 能不能时间轴同步？ 视频中有总时间值，字幕lrc也是按字幕出现的时间来排字幕的吧，类似歌词编辑。
user-0 提问: C语言大面试题  寻最优解

回复:
user: user-1
content: 引用 6 楼 my_live_123 的回复:先自己做出来，再尝试最优解！同意1L观点，基础题目！考察语言功底，算法性不强！ ++ 先实现，再优化； 这些都不是很难。

user: user-2
content: 值得练手

user: user-3
content: 很简单的题目啊

user: user-4
content: 是的是的.....

user: user-5
content: 我怎么觉得是学生拿作业上来套答案的。。。。是我太阴暗了么

user: user-6
content: 先自己做出来，再尝试最优解！同意1L观点，基础题目！考察语言功底，算法性不强！

user: user-7
content: 网上这些问题已经差不都是有源码的！楼主google下就好！

user: user-8
content: 1、比较字符串，输入它们第一个不同字母的位置，大小写不敏感     先统一转换为大写或者小写，然后比较，比较的同时记录位置  2、判断一个数是不是回文数，数字 1234321。   使用字符串输入，然后a[i]与 a[strlen(a)-i] 比较，如果不同就返回  3、比较两字符串长短，并返回结果。   使用strlen？  4、给一个字符串，编程取其中一个特定的字符并输出。   使用sscanf格式提取字符串  5、是比较两个英文字符串的不相同的字符的位置（忽略字母大小写）   同第一题  6、主函数调用一函数     如：检索出字符串中出现次数最多的那个字符，不考虑大小写，然后返回该字符。                  先统一转换为大写或者小写                int a[26];                然后遍历这个字符串，同时a[str[i]-'a']++ ; 然后取出a数组里面值 最大的那个所代表的字符。                 7、查找字符串中出现次数最多的字符，并返回该字符，只考虑小写字母，不考虑不同字母出现次数一样多的情况 同第六题  8、输入一个整数n，计算不大于n的数中和7相关的数的个数，包括能被7整出的数和含有字符7的数。  遍历。。      例如：输入20，输出3（7、14、17）。  9、输入一个整数将每一位上的奇数放在一个新整数中，高位放在高位，地位在低位。  使用字符串输入，从高位开始判断，然后高位的字符转换为数字为奇数的 话，就把新整数*10加上该数字   10、输入一串数，将其最小的放在第一位，次小的放在最后一位，再小的放在第二位，再再小的放在倒数第二位，以此类推。  同第2题，交换位置   11、写一个函数，传入参数为应付钱数。返回值为买家最少付出的钱的张数int get MoneyNum(int  iInputMoney)例如：买家应付351元，最少张数为5.备注：可支付的钱币只有100、50、10、5、1不考虑2、20以及小数部分。    12、设有几个人围坐在一圈并按顺时针方向从1到几编号，从第S个人开始进行1到m的报数。报数到第M个人，此人出圈。再从他的下一个人重新开始1到M的报数，如此进行下一直到所有人都出圈为止，输出报数顺序。 参考约瑟夫环的问题   13、对姓氏进行排名Char str[ ]=”zhang   wang   li    zhao”                    Char str_ new[ ]=”li  wang   zhang   zhao”      接口：sort（str,len,str_new）  14、将一组整数中为奇数的数提取出来，高低位顺序不变。如：8 3 7 9 5 2 1 4-----》3 7 5 1  15、一组2n+1个元素的正整形数组，按升序排序，然后将小于中间数值的成员替换为中间的值。     （貌似还有：“位置不变”，不过实在不理解其含义，看了例子就不用关心它的意思了），例如：1,2,3,4,5，输出为：3,3,3,4,5，原型：int fun(int arry[],int n,char*output){return 0;}  16、输入一个四位的十进制整数，编程实现将这四位整数转化为十六进制的字符串，并输出十六进制的字符串（注意负数的处理）  17、输入：一个四位的整数，比如：2367，输出：2+3+6+7=18

user: user-9
content: 目测了一下，没发现任何难题，应该说没有限制任何方法和时间复杂度，你随便写就好了

user: user-10
content: 同意楼上！！！

user: user-11
content: 都是基础题目。。。。
user-0 提问: C语言为什么不支持多个返回值

回复:
user: user-1
content: 引用 楼主 wangjun403 的回复:如题 貌似编译型语言都不支持 多返回值主要是很多cpu寄存器资源宝贵,而且不如指针来的实在,指向一段公共缓冲区,这样的只需要一个寄存器就ok了

user: user-2
content: 结构体可以解决~

user: user-3
content: 很簡單的問題 那個我都不會回答,這問題我會  1.很繁雜,以組合語言角色來說.C也是要翻譯成組合語言再變成機氣碼的 2.不需要,可以用指針. 3.假如要,有多個返回值 i = ret(); 這裡回2個,1個i怎麼裝? 語言夠開發所用就好了,那麼繁雜干嘛

user: user-4
content: 这个问题真蛋疼

user: user-5
content: 类和结构体不就是多个值吗？若真要返回毫不相干的变量，直接用输出参数即可

user: user-6
content: 引用 23 楼 blackkettle 的回复:[quote=引用 20 楼 zhao4zhong1 的回复:] 为什么所有语言都不支持返回整个互联网内容！  +1[/quote] 你抄外汇？

user: user-7
content: Linux的fork函数，就是一个特例，一次调用两次返回，lz可以研究。

user: user-8
content: 引用 69 楼 wangjun403 的回复:[quote=引用 65 楼 cjfdqchwh 的回复:] 形式上，返回值只能返回一个对象。  可以返回一个数值  输出参数也是有“返回”的效果，win API中这种形式很多。  此外，这是数据结构设计问题，你要想返回 A 和 B 两个值，可以，你设计一个数据结构：  typedef struct {    int A;    double B; }DataType，*pDataType;  你返回一个 pDataType 就可以实现功能 这是可以实现返回多值的一个另类方法而已，和返回多值有本质区别  如果我只要返回两个结构体中的一个，怎么办呢？ 这样就不行了[/quote]   没必要纠结高级语言中的某些特性，因为这些特性都是封装而来的。封装的越多，你自己掌控的越少，反之则封装的越少，你掌控的越多。而C恰恰就是介于这个少和多之间的，这就是它存在的价值。 至于说C为什么不能返回多个值，这是设计语言及开发编译器时就定下来的，这也体现了它的封装相对少的一面，何必纠结呢。

user: user-0
content: 引用 65 楼 cjfdqchwh 的回复:形式上，返回值只能返回一个对象。  可以返回一个数值  输出参数也是有“返回”的效果，win API中这种形式很多。  此外，这是数据结构设计问题，你要想返回 A 和 B 两个值，可以，你设计一个数据结构：  typedef struct {    int A;    double B; }DataType，*pDataType;  你返回一个 pDataType 就可以实现功能 这是可以实现返回多值的一个另类方法而已，和返回多值有本质区别  如果我只要返回两个结构体中的一个，怎么办呢？ 这样就不行了

user: user-9
content: 2B问题，鉴定完毕

user: user-10
content: 引用 69 楼 wangjun403 的回复:这是可以实现返回多值的一个另类方法而已，和返回多值有本质区别 如果我只要返回两个结构体中的一个，怎么办呢？ 这样就不行了  从现有的机制中，你都可以找到实现方法，别说返回多个值，就是返回一片内存，也是可以做到的。 要返回两个结构体中的一个，你就直接返回那一个不就完了？有什么不对的地方吗？

user: user-11
content: 最根本的原因是，数学书上的等号左边从来只有一个东东。

user: user-1
content: 引用 楼主 wangjun403 的回复:如题 貌似编译型语言都不支持 另辟蹊径啊，就像C也可以写成面向对象的风格

user: user-10
content: 形式上，返回值只能返回一个对象。  可以返回一个数值  输出参数也是有“返回”的效果，win API中这种形式很多。  此外，这是数据结构设计问题，你要想返回 A 和 B 两个值，可以，你设计一个数据结构：  typedef struct {    int A;    double B; }DataType，*pDataType;  你返回一个 pDataType 就可以实现功能

user: user-12
content: 这是规矩。学C就要服从C的规则，这样才能事半功倍！

user: user-11
content: 通过传递参数也是可以得到返回值的，孩子。

user: user-13
content: 因为C语言不是脚本语言，需要顾及对硬件的最高利用度。  引用 楼主 wangjun403 的回复:如题 貌似编译型语言都不支持

user: user-14
content: 多个返回值可以用数据结构返回啊，传参也是啊

user: user-15
content: 因为掌握规则的老外没有这样做……

user: user-16
content: 用结构体，毕竟不是脚本
user-0 提问: C语言匹配指定连接的正则表达式

回复:
user: user-1
content: 引用 2 楼 zhao4zhong1 的回复:#include <stdio.h> char s[]="<a href='http://fc.qdn.cn/archive.php?aid=36145' target=\"_blank\"><font color=\"\">聚隆·城市花园VIP火热办理中</font></a>"; char n[80],v[80]; int main() {     printf("%s\n",s);     if (2==sscanf(s,"%*[^?]?%79[^=]=%79[^\']",n,v)) {         printf("n=[%s],v=[%s]\n",n,v);     } else printf("Format Error!\n");     return 0; } //<a href='http://fc.qdn.cn/archive.php?aid=36145' target="_blank"><font color="">聚隆·城市花园VIP火热办理中</font></a> //n=[aid],v=[36145] //   学习了

user: user-2
content: #include <stdio.h> char s[]="<a href='http://fc.qdn.cn/archive.php?aid=36145' target=\"_blank\"><font color=\"\">聚隆·城市花园VIP火热办理中</font></a>"; char n[80],v[80]; int main() {     printf("%s\n",s);     if (2==sscanf(s,"%*[^?]?%79[^=]=%79[^\']",n,v)) {         printf("n=[%s],v=[%s]\n",n,v);     } else printf("Format Error!\n");     return 0; } //<a href='http://fc.qdn.cn/archive.php?aid=36145' target="_blank"><font color="">聚隆·城市花园VIP火热办理中</font></a> //n=[aid],v=[36145] //

user: user-3
content: 是我的理解能力有问题吗？。。。
user-0 提问: 急求Battle Over Cities的变题的代码

回复:
user: user-1
content: http://blog.csdn.net/mr_jj_lian/article/details/6683828参考一下吧

user: user-2
content: 2010成都regional的题，虽然规模没那么大，但是也不是朴素的O(mn)能过的。初学怎么能做这种题。
user-0 提问: 车载led广告屏如何实现广告同步算法

回复:
user: user-1
content: 引用 楼主 juhekeji 的回复:出租车LED广告在播放广告的时候，广告下发成功后，在播放过程中有车断电上电，那么怎么让这个广告继续同步播放啊。Q 872665008  单片机有片内rom

user: user-2
content: 如果广告内容更新的不太频繁，EEPROM

user: user-3
content: 难道你的车载系统上连个flash都省掉了呀, 数据下载好, 存起来不是更好. 这个芯片又增加不了多少成本.

user: user-4
content: 这个问题不难实现，在单片机的外面外挂一个E2PROM，当单片机断电的时候由于电容还有一定容量的电，足够你存储当前的数据了。

user: user-5
content: 搞个小小的蓄电池我觉得是挺好的 毕竟这东西不算贵 不然的话 就像台式机突然断电一样  数据丢失！ 也可以在播放的时候不断的跟新记录 每次打开都先读记录 然后接着播放吧

user: user-6
content: 不要企图优雅的结束（因为这是不可能办到的） 而要在烂的不能再烂的摊子上也能重整河山！

user: user-7
content: 没搞过嵌入式，但结局这种问题的办法就是记录。 比如加个电池，保存程序运行的关键数据，就好。

user: user-0
content: 坚决消灭零回复，谢谢您
user-0 提问: C语言，求教递归定义，随手写的代码，这算不算递归

回复:
user: user-0
content: 引用 9 楼 WhiteBird99 的回复:当然是递归... 递归的特点就是自己调用自己, 并且最后能够结束. 谢谢，都说递归那就算是递归吧，刚结过贴，不好意思了

user: user-1
content: 当然是递归... 递归的特点就是自己调用自己, 并且最后能够结束.

user: user-0
content: 谢谢楼上各位，三人为众，本着这种思想应该是递归了 本人还是会写递归的，只是在我的程序中需要加个 return 返回不想让程序回来继续执行，写好程序后关于这段代码和朋友发生了分歧，特来此问一下，上面的程序也是临时写的，谢谢楼上各位

user: user-2
content: 递归：自己调用自己，你说是不是？ 前几次执行return 把函数都给结束了，肯定不会输出a 了！

user: user-3
content: 当然是递归了，只是前9次都被return掉了，所以才打印一个a罢了！

user: user-4
content: 是递归。。。

user: user-5
content: 我对递归的理解: 1.先从函数的语意上来理解你自己写的递归程序,一个能正常工作的递归程序,必然是从语意上是说得通的.比如 printfff(int i, char ch) //这个函数的语意思是打印i次,字符ch.根据这个语意,我可以做出如下: 当i=0时,什么都不打印,直接return了. 当i>0时,先打印一次,然后再打印i-1次,即 printfff(i-1,ch) 以此来写递归,会感到很流畅  2.递归一定要有一个"出口点",不能无限递归.

user: user-6
content: 如果把 printf("%c\n", ch);  放到 if判断之前  估计又是另一番景象了 个人觉得 也算是递归

user: user-7
content: http://zh.wikipedia.org/wiki/%E9%80%92%E5%BD%92 对于递归的详细内容，参考资料《组合数学》中内容。 这是递归，深度是10 之所以输出一个a，因为   return printfff(i, ch);  有个return在头，所以深层调用返回来后函数就结束了 如果想每层调用都输出a，把return去掉即可

user: user-8
content: “给定一个小点的输入，完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门！ 递归函数关注以下几个因素 ·退出条件 ·参数有哪些 ·返回值是什么 ·局部变量有哪些 ·全局变量有哪些 ·何时输出 ·会不会导致堆栈溢出  http://www.codeproject.com/Articles/418776/How-to-replace-recursive-functions-using-stack-and
user-0 提问: 马上要实习了。面试安卓开发一般面试什么

回复:
user: user-1
content: 楼主加油，方向对，有前途

user: user-2
content: 进这个帖子本来只想说句,最先找到正确的地方问问题来着.发现有前辈了

user: user-3
content: 如果是我面试的话，我肯定要问基础知识，上面所谓的开发都是不用经过思考就直接拿来用就行

user: user-4

user: user-0
content: 非常感谢大家的回答

user: user-5
content: 引用 楼主 ruanjianyujian 的回复:大四马上要实习了，我对安卓开发很感兴趣，想面试安卓，自己做过项目，项目中用了listview的优化，下拉刷新，分页加载，json解析数据库，pull解析xml，异步加载图片，软引用，本地存储sqllite,百度地图，分享到微博，空间，正在研究消息推送，但是不知道面试的时候，是面试的Java基础比较多，还是安卓技术比较多，对于Java基础的一些概念有些生疏了。。。  如果有开发过项目的经验的话，就比较好把握了！面试安卓应该也会代点java基础知识吧！ 主要还是开发的经验会问的比较多！楼主多注意就好了！

user: user-6
content: 楼主做过项目，应该有不少思考和积累吧，抱着谦虚学习的心态去面试就好。

user: user-7
content: 引用 4 楼 u011779875 的回复:[quote=引用 楼主 ruanjianyujian 的回复:] 大四马上要实习了，我对安卓开发很感兴趣，想面试安卓，自己做过项目，项目中用了listview的优化，下拉刷新，分页加载，json解析数据库，pull解析xml，异步加载图片，软引用，本地存储sqllite,百度地图，分享到微博，空间，正在研究消息推送，但是不知道面试的时候，是面试的Java基础比较多，还是安卓技术比较多，对于Java基础的一些概念有些生疏了。。。 自己做过项目，项目中用了listview的优化，下拉刷新，分页加载，json解析数据库，pull解析xml，异步加载图片，软引用，本地存储sqllite, 这已经很厉害了 关键问题是这些你用了多久学会的 如果你说你只用了半个月就把这些搞定了 相信 每一家公司都会给机会实习的[/quote]主要是问你时你得知道是怎么回事，能回答个123就差不多了。

user: user-8
content: 引用 楼主 ruanjianyujian 的回复:大四马上要实习了，我对安卓开发很感兴趣，想面试安卓，自己做过项目，项目中用了listview的优化，下拉刷新，分页加载，json解析数据库，pull解析xml，异步加载图片，软引用，本地存储sqllite,百度地图，分享到微博，空间，正在研究消息推送，但是不知道面试的时候，是面试的Java基础比较多，还是安卓技术比较多，对于Java基础的一些概念有些生疏了。。。 自己做过项目，项目中用了listview的优化，下拉刷新，分页加载，json解析数据库，pull解析xml，异步加载图片，软引用，本地存储sqllite, 这已经很厉害了 关键问题是这些你用了多久学会的 如果你说你只用了半个月就把这些搞定了 相信 每一家公司都会给机会实习的

user: user-7
content: 实习不会问很复杂的问题的。会根据你的作品来具体来问。面试前看看基础，了解下你要面试的公司，看看公司的案例，主要的还是要明白自己的做过什么，用到那些技术，就是实际的项目经验。

user: user-9
content: 1、感觉来错区了 2、这个应该还要看公司了，有些公司不关心这个，进来以后都要再培训下什么的。不过你既然是做安卓的，应该这两方面都会问的吧。至于偏重哪一个，真不清楚。不过感觉应该是安卓为主，其次才是Java之类的语言。你既然做过那么多，应该没什么问题的。 3、实习不要太紧张，多去几家公司看看就知道了，一方面看看会问什么，一方面也看看公司环境、文化是否是你喜欢的。
user-0 提问: TDD 测试驱动开发艺术-如何编写测试

回复:
user: user-0
content: 很有用，看一看反对派的意见也很能开拓思路

user: user-1
content: 友情帮顶一下。

user: user-2
content: 搜“拒绝测试驱动开发（TDD）的10个理由”
user-0 提问: 一个类型转换的问题

回复:
user: user-1
content: 转换为BYTE*类型，是为了与后面 pDosheader->e_lfanew+24相加 比如 hMod== 0xAAA0000, pDosheader->e_lfanew == 10 (BYTE*)hMod+pDosheader->e_lfanew+24 == 0xAAA0000 + 10 + 24 (int*)hMod+pDosheader->e_lfanew+24 == 0xAAA0000 + (10 + 24)*4

user: user-2
content: 搜PE文件结构

user: user-3
content: 难道是和平时我们使用（void*）一个意思？

user: user-4
content: 《Windows PE权威指南》
user-0 提问: 一个吉比特面试题~求解~

回复:
user: user-1
content: 开优化的话，生成的代码估计都一样吧。

user: user-2
content: 教科书后的题目，看那一章是说什么的。就特么那个原因。。

user: user-3
content: 引用 3 楼 nice_cxf 的回复:好垃圾的题目 顶

user: user-4
content: 好垃圾的题目

user: user-5
content: 1快于2 1.循环次数很少 ABC都很简单 2.ＡＢＣ后面跟个ｂｒｅａｋ之类的 ３．Ａ１执行完　要ｗａｉｔｅ　ｆｏｒ　Ｂ１　　Ｂ１　ｗａｉｔｅ　ｆｏｒＣ１　类似的吧！

user: user-6
content: 5种情况？ 有没有例子？什么叫情况  我举一个吧  如果abc三个程序段很大，不能一次性放入内存，那么第一种慢 不知道对不对

user: user-7
content: 最讨厌这种，咬文嚼字的题目了。

user: user-8
content: 引用 6 楼 zhao4zhong1 的回复:profiler 靠模铣床？？？

user: user-9
content: profiler
user-0 提问: 关于static全局变量与普通全局变量的区别

回复:
user: user-1
content: 引用 3 楼 baipv008 的回复:[quote=引用 楼主 qq283802332 的回复:] 定义该变量的源文件内有限(即在1.h中有限)。 你的核心错误在于： .h不是源文件，源文件是指.c或.cpp[/quote] 嗯，#include <*.h>语句的效果就是预处理时将*.h的全部内容复制到使用include语句的文件中

user: user-2
content: 编译的过程有好几步的，在给gcc编译之前是预处理，预处理时把include包括的文件加进来，之后这个文件给gcc进行编译。这时候才是真正意义上的源文件。   定义与申明是不同的，申明可以放到头文件中去，但是定义是不能放到头文件中的。 定义与申明的不同在于申明是给编译器看的，但是定义会分配内存。你使用 static int s;这个时候就已经分配了一个内存。这是定义，怎么能放到内存里呢？

user: user-3
content: 比如一个项目里面有2个.c源文件（互相不能#include，include .c文件不规范），一个文件定义了static全局变量a，另一个文件就无法用extern a声明这个外部变量，非static就可以。

user: user-4
content: 函数体内static变量的作用范围为该函数体，改变量只被分配一次，其值在下次调用的时候扔维持上次调用的值。 模块内的static全局变量可以被模块内的所有函数访问，但不能被模块外的其他函数访问。 模块内的static函数只能被该模块内部的其他函数调用，这个函数的使用范围被限制在该模块内部。 C++中另有类： 类中static成员属于整个类所有，对类的所有对象只有一份拷贝 类中static成员函数属于整个类所有，这个函数不接受this指针，因而只能访问类的static成员变量。  你没搞清楚.h .c区别。.h仍是模块的一部分。include了.h就把.h的所有内容放在了.c中，直接使用命令行gcc -E file..c -o file.i看看结果

user: user-5
content: 楼主只要知道 编译器是怎么处理#include的 就是直接把那些文件内容拷贝进来 然后再编译的 就是和你直接写在那个点c里是一样的

user: user-6
content: 楼上几位都说得对 楼主你明明已经include了1.h，当然被视为同一个文件了

user: user-7
content: 你的理解没有错，但是例子给错了，#include的话，展开之后相当于static在main中仍然是可见的。你把static放在.h文件中是无意义的，且很容易被重复引用而形成重复定义。正确的做法是在.c中定义全局变量，而在.h中用extern引出全局变量，当然static变量是无法extern的。  引用 楼主 qq283802332 的回复:这是在书上看到的一个static全局变量与普通全局变量的一个区别说明  1) 全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式， 静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别在于非静态全局变量的作用域是整个源程序， 当一个源程序由多个源文件组成时，非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域， 即只在定义该变量的源文件内有效， 在同一源程序的其它源文件中不能使用它。由于静态全局变量的作用域局限于一个源文件内，只能为该源文件内的函数公用，因此可以避免在其它源文件中引起错误。  这是源文件1.h  int a = 2;                //普通全局变量 static int s = 5;         //static全局变量   这是源文件2.h  int b = 3;                //普通全局变量   这是main.c  #include <stdio.h> #include "1.h" #include "2.h"  int func() {     return s; }  int main() {     printf("%d\n", a);     printf("%d\n", b);      printf("%d\n", s);        //这里有问题 }   在printf("%d\n", s)中， s这个变量是我在1.h这个头文件中定义的一个static全局变量， 而从上面的说明中可以知道static去阿奴姐变量限制了其作用域， 即之灾定义该变量的源文件内有限(即在1.h中有限)。 在同一源程序的其它源文件中不能使用它。可是我却可以在main.c中使用这个变量， 这是不是矛盾了 这个是我现在理解不了的地方， 请各位code monkey讲解一下

user: user-8
content: 引用 楼主 qq283802332 的回复:定义该变量的源文件内有限(即在1.h中有限)。 你的核心错误在于： .h不是源文件，源文件是指.c或.cpp

user: user-9
content: C:static 函数外部定义，是文件静态变量，作用域为文件，生命周期是程序生命期。 函数内定义，是函数内部的静态变量，作用域为函数，生命周期是程序生命期。 其中，函数中，语句组的内部静态变量，作用域为该语句组，生命周期是程序生命期。  C++：     文件内的，匿名命名空间内，定义的变量，相当于文件静态变量。     作用域为文件，生命周期是程序生命期。 类内部定义的静态变量，作用域为类，生命周期是程序生命期。 可以使用的区域是类，     友元类或友元函数，以及定义类的区域，这些和友元，访问权等有关。    类的作用域对友元是开放的。子类也有可能可以使用。    对定义类的区域是否开放和访问权限等有关。    其中 public 定义的静态变量， 在定义类的区域，可以通过类名访问。     和函数不同，函数内部定义的静态变量； 不可用在其他地方，只能通过函数调用访问。 类内部定义的静态变量，可以直接在类外部，通过类名引用。

user: user-10
content: 头文件声明普通全局变量不妥，如果多个源文件引用会有重定义错误 一般头文件里面用extern 声明为外部全局变量吧，然后在某个源文件里面真正定义。

user: user-11
content: 一般而言，定义变量在 c 文件中，声明变量在 h 文件中
user-0 提问: VC下写的一个链表操作，错误好多啊，是缺少什么头文件么？

回复:
user: user-1
content: 编译器问题？我用的是VC"++6.0可以运行无措

user: user-2
content: 楼上正解 改成.cpp 编译正确

user: user-3
content: cpp文件编译通过！楼主把文件名改成.cpp的吧！c++兼容c，但是c不兼容c++的！

user: user-4
content: 改成.CPP文件,点c文件格式使用C编译器，C编译器不支持 &引用参数类型。
user-0 提问: 这个周末的一个非名牌大学的校级算法大赛，我该准备些什么？

回复:
user: user-0
content: 引用 8 楼 liman65727 的回复:开来我猜错了，你也猜错了    交流交流下编程。

user: user-0
content: 引用 8 楼 liman65727 的回复:开来我猜错了，你也猜错了 你的移动短号是多少？我的是646496

user: user-1
content: 开来我猜错了，你也猜错了

user: user-0
content: 引用 4 楼 liman65727 的回复:如果我没猜错的话楼主应该是贵阳学院的吧如果我没有猜错的话，你应该不是贵阳地区的。

user: user-2
content: 准备的有点晚, 而且太低估对手了...

user: user-3
content: 不用带任何准备 带着你那份自信与实力去比赛就了

user: user-1
content: 如果我没猜错的话楼主应该是贵阳学院的吧

user: user-4
content: 有个C算法100题，挺不错的。都是常用的算法，可用作燃眉之急吧。试试，挺有趣的。百度文库就有不少

user: user-1
content: 楼主太过紧张了，大二还是先学好数据结构再说，这种校级的算法竞赛，难度都不会太大，主要是考编程能力。

user: user-1
content: 引用 9 楼 zhang5476499 的回复:[quote=引用 8 楼 liman65727 的回复:] 开来我猜错了，你也猜错了 你的移动短号是多少？我的是646496[/quote] Q:657271181,短号666237

user: user-0
content: 引用 1 楼 ak47_wz 的回复:上oj去刷题，或者直接去看《算法竞赛入门经典》。都能在短时间内快速提高。嗯，在当当网购了这本书，就是一直没有寄到手上，各种急啊。

user: user-5
content: 上oj去刷题，或者直接去看《算法竞赛入门经典》。都能在短时间内快速提高。
user-0 提问: 【求助】C语言编的程序，怎么让那个EXE文件默认全屏运行？

回复:
user: user-1
content: #include <windows.h> LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {     PAINTSTRUCT ps;     HDC hdc;     HFONT hfont,ohfont;     RECT r;     COLORREF oc;      switch(message) {     case WM_CLOSE://按Alt+F4退出         PostQuitMessage(0);         break;     case WM_PAINT:         BeginPaint(hWnd, &ps);         hdc = ps.hdc; // the device context to draw in         GetClientRect(hWnd, &r); // Obtain the window's client rectangle         hfont = CreateFont(240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "华文楷体");         ohfont=SelectObject(hdc,hfont);         oc=SetTextColor(hdc,0x00C080FF);         SetBkMode(hdc, TRANSPARENT);         TextOut(hdc,r.left+r.right/2-720, r.top+r.bottom/2-120,"最短画图程序",12);         SelectObject(hdc,ohfont);         SetTextColor(hdc,oc);         DeleteObject(hfont);         EndPaint(hWnd, &ps);         break;     default:         return DefWindowProc(hWnd, message, wParam, lParam);     }     return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {     MSG msg             = {0};     WNDCLASS wc         = {0};     HBRUSH hbrh;     hbrh=CreateSolidBrush(0x00000000);     wc.lpfnWndProc      = WndProc;     wc.hInstance        = hInstance;     wc.hbrBackground    = hbrh;     wc.lpszClassName    = "minwindowsapp";     wc.hCursor          = LoadCursor(NULL,IDC_ARROW);     if( FAILED(RegisterClass(&wc)) ) return 1;      if(FAILED(CreateWindow(wc.lpszClassName,                         "Minimal Windows Application",                         WS_POPUP|WS_VISIBLE,                         0,                         0,                         GetSystemMetrics(SM_CXSCREEN),                         GetSystemMetrics(SM_CYSCREEN),                         0,                         0,                         hInstance,                         NULL)))         return 2;      while( GetMessage( &msg, NULL, 0, 0 ) > 0 ) {         DispatchMessage( &msg );     }     DeleteObject(hbrh);     return 0; }

user: user-2
content: 引用 楼主 u012605940 的回复:C语言编的程序，完成后出现一个EXE文件，怎么让那个EXE文件默认全屏运行？不管到哪个电脑上，都是全屏运行、、？ 可以调整的，可以用鼠标点击窗口上边缘白色部分，右键有属性，可以修改字体大小与布局大小，可以看一下下面的图片，我测试了一下，修改了可以再次打开就是你上次设置的值！

user: user-3
content: http://hi.baidu.com/time9154/item/37ab6e3c2ff119bd134b14f6
user-0 提问: 变长参数(printf的形参那种)，移植性如何？

回复:
user: user-1
content: C标准库可以跨平台.

user: user-2
content: 引用 2 楼 NE_Demon 的回复:还有，除了可变参数外，还有什么办法可以在调用函数的时候，传递任意类型的实参，而不警告？ 比如： int i; int *pi; test(i); test(pi); 我不想让第三和第四句有报警 test的定义，无论是test(long v);还是test(void* v); 都会有一条语句要报警的。  void test(int v);  int i; int *pi; test(i); test((int)pi);

user: user-3
content: 上C++函数重载，也可以不确定类型。

user: user-4
content: 标准c里面的，当然能跨平台

user: user-0
content: 还有，除了可变参数外，还有什么办法可以在调用函数的时候，传递任意类型的实参，而不警告？ 比如： int i; int *pi; test(i); test(pi); 我不想让第三和第四句有报警 test的定义，无论是test(long v);还是test(void* v); 都会有一条语句要报警的。

user: user-5
content: 是C语言标准，当然需要编译器支持

user: user-6
content: 仅供参考#include <stdio.h> #include <stdlib.h> #include <string.h> #ifdef WIN32     #include <windows.h>     #include <io.h> #else     #include <unistd.h>     #include <sys/time.h>     #include <pthread.h>     #define  CRITICAL_SECTION   pthread_mutex_t     #define  _vsnprintf         vsnprintf #endif //Log{ #define MAXLOGSIZE 20000000 #define MAXLINSIZE 16000 #include <time.h> #include <sys/timeb.h> #include <stdarg.h> char logfilename1[]="MyLog1.log"; char logfilename2[]="MyLog2.log"; static char logstr[MAXLINSIZE+1]; char datestr[16]; char timestr[16]; char mss[4]; CRITICAL_SECTION cs_log; FILE *flog; #ifdef WIN32 void Lock(CRITICAL_SECTION *l) {     EnterCriticalSection(l); } void Unlock(CRITICAL_SECTION *l) {     LeaveCriticalSection(l); } #else void Lock(CRITICAL_SECTION *l) {     pthread_mutex_lock(l); } void Unlock(CRITICAL_SECTION *l) {     pthread_mutex_unlock(l); } #endif void LogV(const char *pszFmt,va_list argp) {     struct tm *now;     struct timeb tb;      if (NULL==pszFmt||0==pszFmt[0]) return;     _vsnprintf(logstr,MAXLINSIZE,pszFmt,argp);     ftime(&tb);     now=localtime(&tb.time);     sprintf(datestr,"%04d-%02d-%02d",now->tm_year+1900,now->tm_mon+1,now->tm_mday);     sprintf(timestr,"%02d:%02d:%02d",now->tm_hour     ,now->tm_min  ,now->tm_sec );     sprintf(mss,"%03d",tb.millitm);     printf("%s %s.%s %s",datestr,timestr,mss,logstr);     flog=fopen(logfilename1,"a");     if (NULL!=flog) {         fprintf(flog,"%s %s.%s %s",datestr,timestr,mss,logstr);         if (ftell(flog)>MAXLOGSIZE) {             fclose(flog);             if (rename(logfilename1,logfilename2)) {                 remove(logfilename2);                 rename(logfilename1,logfilename2);             }         } else {             fclose(flog);         }     } } void Log(const char *pszFmt,...) {     va_list argp;      Lock(&cs_log);     va_start(argp,pszFmt);     LogV(pszFmt,argp);     va_end(argp);     Unlock(&cs_log); } //Log} int main(int argc,char * argv[]) {     int i; #ifdef WIN32     InitializeCriticalSection(&cs_log); #else     pthread_mutex_init(&cs_log,NULL); #endif     for (i=0;i<10000;i++) {         Log("This is a Log %04d from FILE:%s LINE:%d\n",i, __FILE__, __LINE__);     } #ifdef WIN32     DeleteCriticalSection(&cs_log); #else     pthread_mutex_destroy(&cs_log); #endif     return 0; } //1-78行添加到你带main的.c或.cpp的那个文件的最前面 //81-85行添加到你的main函数开头 //89-93行添加到你的main函数结束前 //在要写LOG的地方仿照第87行的写法写LOG到文件MyLog1.log中
user-0 提问: 由GETCHAR和DO。。。WHILE引起的死循环

回复:
user: user-0
content: 改过后通过了

user: user-0
content: 在上述程序中，break之后少了分号。 在rand之前，去掉int . 将getchar改为getchar. 不知理由。

user: user-1
content: a=int rand();b=int rand(); 编译通过了？
user-0 提问: 如何在linux下用c语言实现对键盘的监听 

回复:
user: user-0
content: 引用 3 楼 yulitingfeng 的回复:在《linux程序设计》中有一个用监听键盘在终端上输入的代码。 如果有这本书可以看看源码是怎么实现的。 恩恩，我看看

user: user-0
content: 引用 2 楼 yulitingfeng 的回复:可以看看hook函数，不过对于这种危险级别的东西需要谨慎点。 是参照win下hook来写一个linux下的吗

user: user-0
content: 引用 4 楼 fantasy_l 的回复:[quote=引用 楼主 SH471630654 的回复:] 在学习操作系统的东西，想在linux下用c语言实现： 一个父进程创建二个子进程，其中一个子进程来监听键盘，另一个子进程将监听到的信息存入文件。  在linux中，如何实现对键盘的监听呢，没有像win中现成的函数吗？？ 你是山东科技大学的吧[/quote] 还真是，我网络的，你哪个专业？

user: user-1
content: 引用 楼主 SH471630654 的回复:在学习操作系统的东西，想在linux下用c语言实现： 一个父进程创建二个子进程，其中一个子进程来监听键盘，另一个子进程将监听到的信息存入文件。  在linux中，如何实现对键盘的监听呢，没有像win中现成的函数吗？？ 你是山东科技大学的吧

user: user-2
content: 在《linux程序设计》中有一个用监听键盘在终端上输入的代码。 如果有这本书可以看看源码是怎么实现的。

user: user-2
content: 可以看看hook函数，不过对于这种危险级别的东西需要谨慎点。

user: user-3
content: http://zhidao.baidu.com/link?url=KSzvA3FzOTyfSAjUdnoU7Xr2fFVn8HOeyLaQAM1tOh6n9pdXA57DeNviXRlEEAOdTJHmuj2yM_fqDDbNpPSW6q
user-0 提问: 请问GUI_MSG_COMMAND这个消息是如何产生的?

回复:
user: user-0
content: 是第三方库自定义的消息，请问这个消息是如何产生的? typedef enum MGUI_MSGID {     GUI_MSG_CREATE = 0,     GUI_MSG_DESTROY,     GUI_MSG_PAINT,      GUI_MSG_CLOSE,     GUI_MSG_QUIT,     GUI_MSG_KEY,     GUI_MSG_TOUCH,     GUI_MSG_COMMAND,     GUI_MSG_SYSTEM,     GUI_MSG_NOTIFY_CHILD_DELETED,     GUI_MSG_SET_FOCUS, }mgui_msgid_e;

user: user-1
content: 被放入消息队列里面  然后被取出来  然后你就发现他产生了

user: user-2
content: 第三方库自定义的消息，研究一下库的文档。  引用 楼主 huabinsir 的回复:请问GUI_MSG_COMMAND这个消息是如何产生的? 是点击某个标签产生的吗?  static __s32 __FileExplorerProc(mgui_msg_t * msg) { 	APP_DEBUG_CBMSGEx;  	switch(msg->id) 	{ 	case GUI_MSG_CREATE: 	case GUI_MSG_DESTROY: 	case GUI_MSG_QUIT: 		break; 	case GUI_MSG_POWER_LOW: 	     return 0;		 	case GUI_MSG_KEY: 		break; 	case GUI_MSG_COMMAND: 		return OnFileExplorerCommand(msg); 	case GUI_MSG_PAINT: 	case GUI_MSG_IME_CHAR: 	case GUI_MSG_IME_CTRL_CHAR: 		App_FileExplorerOnImeMsg(msg); 	return 0; 	case GUI_MSG_TIMER: 	default: 		break; 	} 	return MGUI_WinDefaultProc(msg); }

user: user-3
content: 应该是那种Gui下命令消息吧！ 在对应的IDE中，右键看看是否有相关信息，可以看看！
user-0 提问: 关于linux sem_wait/sem_post的疑问.

回复:
user: user-1
content: 这里： if (data < 3)         {         printf("%x, wait thread\n", tid);         pthread_mutex_lock(&lock);   读取data时候没有加锁。 假设data==2，线程1看到data==2，进入(data < 3)分支； 线程2看到data==2，也进入(data < 3)分支。 最终data == 4。
user-0 提问: 一条嵌入c语言的汇编语句

回复:
user: user-0
content: 呵呵，我说这个问题是我用手机发的，而且发出了两遍，结果哥写的10来行代码和数百文字就这么在发帖的瞬间消失了，就剩这么几个自己都看不懂的字符了，不过没关系，给你们出一个更有挑战的问题吧。

user: user-1
content: 引用 楼主 moon779527421 的回复:unsigned char in(unsigned short _port){ unsigned char result unsigned char in(unsigned short _port); //declare a func unsigned char result; //declare a var

user: user-2
content: 没看明白 ！

user: user-3
content: 这是什么啊？

user: user-4
content: 要问什么

user: user-5
content: 你这是在测试发帖功能吗

user: user-6
content: 这个世界上 不是喜欢问问题的孩子 就是聪明的孩子 而是把简单的问题问的有水平 明确自己想要知道什么 了解自己懂什么的人 最终才会成功 你太不专业了 这问题问的  得出结论 你要先学习问问题在学习去解决问题
user-0 提问: ioctl(fd, HDIO_GET_IDENTITY, &id)时出错

回复:
user: user-0
content: 引用 4 楼 yulitingfeng 的回复:文件已经打开了的，就是ioctl时出错sda驱动ioctl函数没有这个参数处理项； ioctl不支持HDIO_GET_IDENTITY参数，请确定该参数是否正确。可以查下sda驱动的的实现[/quote]  现在知道为什么会出错了，因为我的是SATA硬盘，SATA硬盘不支持HDIO_GET_IDENTITY参数，而要用BLKGETSIZE参数，多谢了

user: user-1
content: 引用 2 楼 tdy353021560 的回复:文件已经打开了的，就是ioctl时出错sda驱动ioctl函数没有这个参数处理项； ioctl不支持HDIO_GET_IDENTITY参数，请确定该参数是否正确。可以查下sda驱动的的实现

user: user-2
content: man 3p ioctl

user: user-0
content: 文件已经打开了的，就是ioctl时出错

user: user-1
content: 确定你的文件是否正确打开，检查下fd； 提示错误是无效参数，该设备驱动不支持此参数。
user-0 提问: 插入函数运行不起，求救

回复:
user: user-1
content: /*----------------插入函数------------*/ void Insert(int list[],int n,int m,int elem)  {  int j;  if(m<1||m>n)  {printf("ERROR!\n"); }  else   for(j=n-1;j>=m-1;i--)  //i--是不是应该改成j--呢？ //还有是不是应该改成下面这样呢？ //for(j=n;j>=m;j--) //你自己再仔细看一下吧！  {list[j]=list[j-1];}  list[m-1]=elem;  n=n+1;  printf("The new list are:" );  Print(list,n);  }   //还有就是 /*----------------插入函数------------*/ void Insert(int list[],int n,int m,int elem) /*---------------删除函数-----------*/ void Delete(int list[],int n,int m) 这两个函数的第二个参数int n是不是应该改成int *n呢？ n应该要做为形参返回的吧？要不然你在函数外面怎么知道 list插入或删除后全局变量n的变化呢？ 自己在仔细看一下代码，运行看看结果就知道了！

user: user-2
content: 已经帮你修改过来了！oK了  void Insert(int list[],int n,int m,int elem) {     int j;     if(m<1||m>n)     {            printf("ERROR!\n");      }        else         for(j = n-1; j>=m-1;j--)  // 这里是j --         {                list[j]=list[j-1];         }        list[m-1]=elem;     n= n+1;     printf("The new list are:" );     Print(list,n);  }

user: user-3
content: 引用 3 楼 u012539475 的回复:这个函数就是让我们修改错误，我不晓得还有哪些错误 你用编译器编译下就知道了

user: user-0
content: 这个函数就是让我们修改错误，我不晓得还有哪些错误

user: user-4
content: 你这goto用的 加一个while循环下不就OK了，用那么多goto做什么 目测可以运行，最好附上错误，我就不运行了

user: user-5
content: 感觉你的gato用的太多
user-0 提问: C语言内存管理问题

回复:
user: user-1
content: 引用 楼主 xey_csu 的回复:多个指针指向同一块内存区，在释放的时候怎么避免被多次释放的错误？ 单进程、线程： free（p); p = NULL; 多进程、线程： 先让别的进程或者线程暂停，然后 free（p); p = NULL;

user: user-2
content: 引用 17 楼 yulitingfeng 的回复:[quote=引用 15 楼 shangyu0801 的回复:] [quote=引用 8 楼 max_min_ 的回复:] 释放后指针置NULL，在释放的时候添加是否为NULL的判断 人家是多指针指向同一堆区 so... 标志一个指针值为空，没有用吧。其它指针值不会变哦。。[/quote] 那就free其中的一个指针，并将所有的指针都置空。下次使用指针时比较NULL就行了。 每次释放时： if(ptr!=null) {    free(ptr);    ptr=null; }  [/quote] 恩，可行。不过，如果说一处释放，其它地方也能得知，到是实际中挺有用的。这样如果能把所有指针都置为空的情况，用一个指针就可以解决。

user: user-3
content: 申请到的内存  就做一条记录，标志地址 和指针 指向该地址的个数， 在释放的时候判断当前的记录中的个数是否为1， 如果不为1就不释放，然后个数减一 当为1的时候就释放，个数减一，删除记录

user: user-4
content: 引用 15 楼 shangyu0801 的回复:[quote=引用 8 楼 max_min_ 的回复:] 释放后指针置NULL，在释放的时候添加是否为NULL的判断 人家是多指针指向同一堆区 so... 标志一个指针值为空，没有用吧。其它指针值不会变哦。。[/quote] 那就free其中的一个指针，并将所有的指针都置空。下次使用指针时比较NULL就行了。 每次释放时： if(ptr!=null) {    free(ptr);    ptr=null; }

user: user-5
content: 用智能指针比较好

user: user-6
content: 置NULL根本不是楼主的意思，也解决不了楼主的问题，比如：  char* a = malloc(100); char* b = a; char* c = a;  free(a); a = NULL; free(b); // 这里会崩溃 free(c); // 同上  因为，a,b,c作为指针，虽然指向同一个东西，但是它们却都是独立的变量。 也就是，把a值为NULL，并不会对b,c有任何影响，它们仍然指向malloc申请的内存。 所以free同一块内存导致崩溃。  解决办法可以用引用计数，以下代码仅供参考：  char* new_char(int* c, int n) { *c = 1; return malloc(n); } char* use_char(int* c, char* p) { ++*c; return p; } void delete_char(int* c, char** p) { if(--*c == 0) { free(*p); } *p = 0; }  int ref = 0; char* a = new_char(&ref, 100); char* b = use_char(&ref, a); char* c = use_char(&ref, a);  delete_char(&ref, &a); delete_char(&ref, &b); delete_char(&ref, &c);

user: user-7
content: 引用 8 楼 max_min_ 的回复:释放后指针置NULL，在释放的时候添加是否为NULL的判断我看到这问题，大脑就想到的这个方法。

user: user-8
content: 引用 楼主 xey_csu 的回复:多个指针指向同一块内存区，在释放的时候怎么避免被多次释放的错误？  实际上，多个指针指向同一内存区，你还可以使用指针的指针

user: user-2
content: 引用 8 楼 max_min_ 的回复:释放后指针置NULL，在释放的时候添加是否为NULL的判断 人家是多指针指向同一堆区 so... 标志一个指针值为空，没有用吧。其它指针值不会变哦。。

user: user-4
content: free(ptr); ptr=null;  下次使用时： if(ptr==NULL)  下次释放时： if(ptr!=NULL)

user: user-9
content: 包装一下，然后计数，前面的释放不作操作，最后一个释放才真正释放

user: user-10
content: 用基于计数信号量来进行保护吧，一个指针指向时加一，一个指针释放时减一，直至最后一个释放时计数为零然后再释放，这样就避免了

user: user-3
content: 引用 8 楼 max_min_ 的回复:释放后指针置NULL，在释放的时候添加是否为NULL的判断  感觉这个最简单

user: user-0
content: 谢谢各位的解答

user: user-11
content: 还有一个方法，弄个manager类，或者把某个容纳者当成manager用。这些对象的删除由manager负责。

user: user-11
content: 骚年，用引用计数、智能指针吧。详见boost的shared_ptr或者intrusive_ptr。

user: user-8
content: 这种场合我都是使用全局变量，或者使用一个类进行封装

user: user-12
content: 分步调试查看内存的使用情况

user: user-13
content: 引用 8 楼 max_min_ 的回复:释放后指针置NULL，在释放的时候添加是否为NULL的判断 学习了

user: user-14
content: 引用 8 楼 max_min_ 的回复:释放后指针置NULL，在释放的时候添加是否为NULL的判断  ++
user-0 提问: 奇怪的问题啊

回复:
user: user-0
content: 引用 3 楼 worldy 的回复:#include <stdio.h> #include <termios.h> #include <stdlib.h> #include <unistd.h> struct flaginfo {     int fl_value;     char* fl_name; }; struct flaginfo local_flags[]= {     {ISIG, "Enble signal"},//每个数据单元必须使用大括号     {ICANON, "Cannonical input (erase and kill)"},     {ECHO, "Enable echo"};     {ECHOE, "Echo ERASE as BS-SPACE-BS"},     {ECHOK, "Echo KILL by starting new line"},     {0, NULL} }; .... 原来是这问题，那个分号错误不是主要问题

user: user-1
content: {ECHO, "Enable echo"};  如果;是你要的内容的话  需要写成  {ECHO, "Enable echo"}\;

user: user-2
content: 呵 呵。。。

user: user-3
content: 这个应该应该蛮简单的，看错误信息就知道了； showtty.c:14:24: error: expected ‘}’ before ‘;’ token 很明显应该是“，”。

user: user-4
content: 另外， {ECHO, "Enable echo"}; 后面应该是,

user: user-4
content: #include <stdio.h> #include <termios.h> #include <stdlib.h> #include <unistd.h> struct flaginfo {     int fl_value;     char* fl_name; }; struct flaginfo local_flags[]= {     {ISIG, "Enble signal"},//每个数据单元必须使用大括号     {ICANON, "Cannonical input (erase and kill)"},     {ECHO, "Enable echo"};     {ECHOE, "Echo ERASE as BS-SPACE-BS"},     {ECHOK, "Echo KILL by starting new line"},     {0, NULL} }; ....

user: user-5
content: 这个错误很明显啊 4个警告，1个错误 showtty.c:14:24: error: expected ‘}’ before ‘;’ token 表示14行第24字符有错 你回头看看，这里确实不应该是";"号，而应该是","

user: user-6
content: 14行最后的；应该改为，号吧
user-0 提问: 《C专家编程》里关于总线错误的一个例子

回复:
user: user-1
content: 引用 2 楼 derekrose 的回复:当然啦。。 bus error 你用vs2012肯定编译不出来。。 你用gcc试试 gcc 编译也没有错，我在scientificlinux6.2的虚拟机下做了测试。

user: user-2
content: gcc 编译的u的地址是4对齐的。 vs可能在编译时进行了一些处理。

user: user-2
content: 我在linux上使用gcc 编译，使用gdb调试，发现地址确实是不对齐的，但是运行没有问题。看来在我的电脑上cpu是可以不对齐的。

user: user-3
content: 现代CPU的健壮性大大提高了，哪这么容易出总线错误。

user: user-4
content: 这个和编译器以及CPU体系都有关系. 部分CPU, 一次读取4字节数据, 必须从4字节对齐的地址开始; 而另一些不必须. 对前者, 编译器可以将一条"从非对齐地址读取4字节数据的指令"转换成17条读取单字节数据和移位指令从而在功能上达到相同的效果, 但性能可能下降. 对后者, 这类CPU通常功耗会高一些, 从而约束了在某些场景(如移动手持终端)上的使用.  在新的程序中,直接出现总线错误已经很少了. 但明白这个道理, 在编程时避免这种用法还是有必要的.

user: user-5
content: 试试用gcc 3.3或者更早的版本编译，可能会提示错误。

user: user-6
content: 引用 1 楼 steedhorse 的回复:这个应该是跟体系结构有关，不应该说“一定会出现总线错误”。 有的处理器上会出现总线错误，有的处理器可能性能低一些，有的处理器上则可能完全感觉不到异样。 正解！

user: user-7
content: 如此在意这些细节这是要写编译器的节奏，人才啊！

user: user-8
content: 《C专家编程》有点老，计算机技术日新月异，而且有一些新技术很少看到介绍，有些知识了解一下就好

user: user-9
content: 好奇在啥u上会出事，有的请报上来参考...

user: user-5
content: 引用 5 楼 yulitingfeng 的回复:#include "stdio.h" union {      	char a[10];      	int  i;  }u; int main(int argc, char* argv[]) {  int *p = (int *)u.a[1];  *p = 17;  return 0; } gcc也没提示错误，只是给了个警告：warning: cast to pointer from integer of different size 运行给个段错误。这里是我的错误。int *p = (int *)u.a[1];应该是int *p = (int *)&u.a[1];。gcc并没有给出总线错误提示，也没警告。

user: user-5
content: #include "stdio.h" union {      	char a[10];      	int  i;  }u; int main(int argc, char* argv[]) {  int *p = (int *)u.a[1];  *p = 17;  return 0; } gcc也没提示错误，只是给了个警告：warning: cast to pointer from integer of different size 运行给个段错误。

user: user-5
content: #include "stdio.h" union test{      	char a[10];      	int  i;  }; int main(int argc, char* argv[]) {  union test u;  int *p = (int *)u.a[1];  *p = 17;  return 0; } 来，试试我这个。。。

user: user-10
content: 当然啦。。 bus error 你用vs2012肯定编译不出来。。 你用gcc试试

user: user-11
content: 这个应该是跟体系结构有关，不应该说“一定会出现总线错误”。 有的处理器上会出现总线错误，有的处理器可能性能低一些，有的处理器上则可能完全感觉不到异样。
user-0 提问: c语言程序 合并数据 取反加一 二维数组

回复:
user: user-1
content: 推荐使用WinHex软件查看硬盘或文件或内存中的原始字节内容。  不要把 fopen("...","...");fscanf,fprintf,fclose //读时把\r\n替换成\n，写时把\n替换成\r\n;读到\x1a就设置EOF;读写的内容当字符看待 和 fopen("...","...b");fread,fwrite,fclose  //不作以上替换，遇到\x1a仍继续读;读写的内容当字节看待 弄混了

user: user-2
content: 我用的Mac OS系统，抱歉fopen("/Users/Scottie/Desktop/1.txt", "wb"); 这句没改就回帖了 fopen这句还是改成这样：　     FILE *fp =fopen("D:\\1.txt", "wb");

user: user-2
content: 改成下面这样试试看：  #include<stdio.h>  int i,j,t; int b[8]; int a[24]={     0x1     ,     0x63     ,     0x0     ,     0x2C     ,     0x10     ,     0xAB     ,     0xFF     ,     0xF7     ,     0x0     ,     0x40     ,     0xFF     ,     0xF1     ,     0x1     ,     0x58     ,     0x0     ,     0x37     ,     0x10     ,     0xBF     ,     0xFF     ,     0xF7     ,     0x0     ,     0x40     ,     0xFF     ,     0xF2 };  int main(void) {     FILE *fp =fopen("/Users/Scottie/Desktop/1.txt", "wb");     if (NULL == fp)     {         return 0;     }          for(i=0;i<344;i++)     {         for(j=0;j<12;j++)         {             if(j==0)             {                 b[0] =(a[0]<<8)|a[1];                 if(a[0]==0xff)                 {                     b[0]=~b[0]+1;                 }                 t=b[0];             }                          if(j>1)             {                 b[j-1] =(a[j-1]<<8)|a[j];                                  if((j%2==0)&&(a[j]==0xff))                 {                                          b[j-1]=~b[j-1]+1;                     t=b[j-1];                 }                 else                 {                     t=b[j-1];                 }             }                          fprintf(fp,"%x",t);         }         fprintf(fp,"\n");     }      return 0; }
user-0 提问: 教职工管理系统总有一个错！！求改正

回复:
user: user-1
content: 而且没有 使用代码高亮 的插件，看上去很蛋疼

user: user-2
content: 要学会 Debug

user: user-3
content: 楼主，你最起码也说说你那里错了，以及错误的地方正确的应该是怎么样的吧？

user: user-4
content: 版主对于这种情况能不能管理一下？
user-0 提问: TC中initgraph()函数图形不能初始化怎么办，就指教？

回复:
user: user-1
content: 把BGI复制到你输出路径的文件夹中

user: user-2
content: 引用 6 楼 u011873193 的回复:引用 2 楼 zhao4zhong1 的回复:http://www.easyx.cn还是有错显示EasyX is only for C++ 把源程序扩展名改成CPP，void main()改成int main()，最后加一行return 0；

user: user-3
content: 最近我重温了下tc，然后发现最好在dosbox下运行。

user: user-4
content: 换这个？#include <windows.h> LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) {     PAINTSTRUCT ps;     HDC hdc;     HFONT hfont,ohfont;     RECT r;     COLORREF oc;      switch(message) {     case WM_CLOSE://按Alt+F4退出         PostQuitMessage(0);         break;     case WM_PAINT:         BeginPaint(hWnd, &ps);         hdc = ps.hdc; // the device context to draw in         GetClientRect(hWnd, &r); // Obtain the window's client rectangle         hfont = CreateFont(240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, "华文楷体");         ohfont=SelectObject(hdc,hfont);         oc=SetTextColor(hdc,0x00C080FF);         SetBkMode(hdc, TRANSPARENT);         TextOut(hdc,r.left+r.right/2-720, r.top+r.bottom/2-120,"最短画图程序",12);         SelectObject(hdc,ohfont);         SetTextColor(hdc,oc);         DeleteObject(hfont);         EndPaint(hWnd, &ps);         break;     default:         return DefWindowProc(hWnd, message, wParam, lParam);     }     return 0; } int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {     MSG msg             = {0};     WNDCLASS wc         = {0};     HBRUSH hbrh;     hbrh=CreateSolidBrush(0x00000000);     wc.lpfnWndProc      = WndProc;     wc.hInstance        = hInstance;     wc.hbrBackground    = hbrh;     wc.lpszClassName    = "minwindowsapp";     wc.hCursor          = LoadCursor(NULL,IDC_ARROW);     if( FAILED(RegisterClass(&wc)) ) return 1;      if(FAILED(CreateWindow(wc.lpszClassName,                         "Minimal Windows Application",                         WS_POPUP|WS_VISIBLE,                         0,                         0,                         GetSystemMetrics(SM_CXSCREEN),                         GetSystemMetrics(SM_CYSCREEN),                         0,                         0,                         hInstance,                         NULL)))         return 2;      while( GetMessage( &msg, NULL, 0, 0 ) > 0 ) {         DispatchMessage( &msg );     }     DeleteObject(hbrh);     return 0; }

user: user-0
content: 恩，不用了，就是不好用！

user: user-4
content: http://www.easyx.cn

user: user-2
content: 不要在TC的图形界面编程花太多时间，淘汰很多年的东西，除非你用DOS。XP下编好的程序需要在dosbox下才能运行。

user: user-2
content: 把 TC\BGI\目录下的所有文件(*.BGI）拷贝到你的源程序保存的目录（也许一个EGAVGA.BGI就可以了） initgraph(&gdriver,&gmode,"");  //""表示当前目录

user: user-0
content: 引用 2 楼 zhao4zhong1 的回复:http://www.easyx.cn还是有错显示EasyX is only for C++

user: user-0
content: 也试了，不行

user: user-5
content: 是不是你目录里少了个\\呢？比如D:\\TC2.0

user: user-0
content: 我还是不懂啊，能详细解说下吗？我都快纠结死了…… 我在网上找下面办法，改不了啊！！！在C:TC子目录下输入命令:BGIOBJ EGAVGA  　　 此命令将驱动程序EGAVGA.BGI转换成EGAVGA.OBJ的目标文件。  　　 在C:TC子目录下输入命令:TLIB LIBGRAPHICS.LIB+EGAVGA  　　 此命令的意思是将EGAVGA.OBJ的目标模块装到GRAPHICS.LIB库文件中。  　　 在程序中initgraph()函数调用之前加上一句:  　　 registerbgidriver(EGAVGA_driver):

user: user-0
user-0 提问: 数据结构学完之后

回复:
user: user-1
content: 学完数据结构后用汇编语言 一一实现 这样的话 天下的对手 已经寥寥无几 犹如九阳神功  学什么都很快 之后学乾坤大挪移 疯狂扩展知识面

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

user: user-0
content: 引用 12 楼 u011779875 的回复:学完数据结构后用汇编语言 一一实现 这样的话 天下的对手 已经寥寥无几 犹如九阳神功  学什么都很快 之后学乾坤大挪移 疯狂扩展知识面 好的，感觉汇编好难啊！

user: user-3
content: 知行合一，学以致用

user: user-4
content: 引用 8 楼 lelieven 的回复:[quote=引用 6 楼 jerry_dqh 的回复:] [quote=引用 5 楼 wangdahu888 的回复:] 无量天尊，在你下山之前，先把那本数据结构给烧掉，那么凭着你记忆，还能把哪些招式，重新再写出来的话，到了山下，可以保证不吃亏。。。。 如果是做Windows桌面应用，那还得学习一下c#,c++等语言[/quote]  学C++开始用那本书比较好？[/quote] c++ primer

user: user-0
content: 引用 6 楼 jerry_dqh 的回复:[quote=引用 5 楼 wangdahu888 的回复:] 无量天尊，在你下山之前，先把那本数据结构给烧掉，那么凭着你记忆，还能把哪些招式，重新再写出来的话，到了山下，可以保证不吃亏。。。。 如果是做Windows桌面应用，那还得学习一下c#,c++等语言[/quote]  学C++开始用那本书比较好？

user: user-0
content: 引用 5 楼 wangdahu888 的回复:无量天尊，在你下山之前，先把那本数据结构给烧掉，那么凭着你记忆，还能把哪些招式，重新再写出来的话，到了山下，可以保证不吃亏。。。。 好的！

user: user-5
content: 引用 5 楼 wangdahu888 的回复:无量天尊，在你下山之前，先把那本数据结构给烧掉，那么凭着你记忆，还能把哪些招式，重新再写出来的话，到了山下，可以保证不吃亏。。。。 如果是做Windows桌面应用，那还得学习一下c#,c++等语言

user: user-4
content: 无量天尊，在你下山之前，先把那本数据结构给烧掉，那么凭着你记忆，还能把哪些招式，重新再写出来的话，到了山下，可以保证不吃亏。。。。

user: user-0
content: 引用 1 楼 jerry_dqh 的回复:语言只是个工具，你下面想做什么方面的，比如游戏，一般应用，==。想出想做什么，才考虑下面看什么，学习什么。 偏于应用！

user: user-0
content: 引用 2 楼 wangdahu888 的回复:无量天尊，数据结构学完之后，可以下山了，到山脚上找些人来比试下，练练手。。。。 有道理，找个人练练手！

user: user-4
content: 无量天尊，数据结构学完之后，可以下山了，到山脚上找些人来比试下，练练手。。。。

user: user-5
content: 语言只是个工具，你下面想做什么方面的，比如游戏，一般应用，==。想出想做什么，才考虑下面看什么，学习什么。
user-0 提问: 求住，关于结构体的，学生的一些信息，输入量10组 数据，得不到结果，score 和average 都没值，求大神！！

回复:
user: user-1
content: 请检查scanf的返回值。

user: user-0
content: #include <stdio.h> #include <stdlib.h> #include <time.h>  struct card{ 	char *face; 	char *suit; }; typedef struct card Card; void fillDeck(Card *,char *[],char *[]); void shuffle(Card *); void deal(Card *);  int main() { 	Card deck[52]; 	char *face[]={"A","2","3","4","5","6","7","8","9","10","J","Q","K"}; 	char *suit[]={"Hearts","Diamonds","Clubs","Spades"}; 	srand(time(NULL));  	//fillDeck(deck,face,suit); 	//shuffle(deck); 	//deal(deck); 	return 0;  } void fillDeck(Card *wDeck,char *wFace[],char *wSuit[]) { 	int i; 	for(i=0;i<52;i++) 	{ 		wDeck[i].face=wFace[i%13]; 		wDeck[i].suit=wSuit[i/13]; 	}  } void shuffle(Card *wDeck) { 	int i=0,j; 	Card temp; 	while(i<52) 	{ 		i++; 		j=rand()%52; 		temp=wDeck[i]; 		wDeck[i]=wDeck[j]; 		wDeck[j]=temp; 	} }  void deal(Card *wDeck) { 	int i; 	for(i=0;i<52;i++) 	{ 		printf("%5s of %-8s\t\n",wDeck[i].face,wDeck[i].suit); 	} }

user: user-2
content: 注意scanf。。输出参数时，要加 ','严格按照scanf里面的格式串。

user: user-3
content: please input the data: s  +++++++++++++++++++++++++++++++++++++++++++++ name=,average=0.000000 name=,average=0.000000 name=,average=0.000000 *******************************  +++++++++++++++++++++++++++++++++++++++++++++ name=,average=0.000000 name=,average=0.000000 name=,average=0.000000 你想要这个模式吗？

user: user-3
content: 你得函数写错了吧！ 到底是fb函数，还是fa函数，仔细看看

user: user-4
content: 输入时%s最好放在最后，否则后面的数据都会被认为是字符串

user: user-0
content: 再补充2点 fa函数 是对 学生的3门课程成绩 排序，fb函数 是输出 成绩表
user-0 提问: 为什么for循环第一个条件置空就会有错

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

user: user-2
content: 小引用 10 楼 yyyangyy 的回复:[quote=引用 7 楼 AnYidan 的回复:] [quote=引用 6 楼 AnYidan 的回复:] for循环第一个条件置空也要保证循环起始点是正确的  尤其是再次进入循环时[/quote] i=strlen(a)-1; j=strlen(b)-1; 这2个语句已经在for循环前声明了，也就是跟i=lena-1,j=lenb-1等价了吧。。那起始点应该正确吧？[/quote]   如果前面获取的值没有问题的话 ，，看上去  没有 错

user: user-3
content: 注意进入for循环时i的初始值。

user: user-4
content: 引用 10 楼 yyyangyy 的回复:[quote=引用 7 楼 AnYidan 的回复:] [quote=引用 6 楼 AnYidan 的回复:] for循环第一个条件置空也要保证循环起始点是正确的  尤其是再次进入循环时[/quote] i=strlen(a)-1; j=strlen(b)-1; 这2个语句已经在for循环前声明了，也就是跟i=lena-1,j=lenb-1等价了吧。。那起始点应该正确吧？[/quote]  第二次进入内层循环哪？

user: user-5
content: 可以去掉，但是分号得加，不过可能结果就会有问题了，因为内层用到i和j

user: user-0
content: 引用 7 楼 AnYidan 的回复:[quote=引用 6 楼 AnYidan 的回复:] for循环第一个条件置空也要保证循环起始点是正确的  尤其是再次进入循环时[/quote] i=strlen(a)-1; j=strlen(b)-1; 这2个语句已经在for循环前声明了，也就是跟i=lena-1,j=lenb-1等价了吧。。那起始点应该正确吧？

user: user-6
content: 可以这样写 for(;;) //内容可以没有，但是分号一定要 { }

user: user-7
content: 这是基本的语法规则,记住就行了

user: user-4
content: 引用 6 楼 AnYidan 的回复:for循环第一个条件置空也要保证循环起始点是正确的  尤其是再次进入循环时

user: user-4
content: for循环第一个条件置空也要保证循环起始点是正确的

user: user-8
content: 可以去掉外层for里面的，内层的不行，因为j的值在第一次循环结束后已经变成-1了

user: user-0
content: 就是可以运行，输入数据后计算有错误

user: user-0
content: 去掉后运算有错误！！！！

user: user-9
content: 去掉也得加个分号的。

user: user-10
content: 要价格分号= =  for（;i>=0;i--） {}
user-0 提问: k路归并问题，要求用c语言（急，分好商量）

回复:
user: user-1
content: 你给的c++程序修改cin>>n为scanf cout修改为printf； 修改下头文件，其他地方不需要改动。

user: user-0
content: 这里有个是C++版本的，可是我没学过C++，看不懂 #include <iostream> #include<fstream> #include<cstdlib> #define maxn 100010 using namespace std; int n; int a[maxn],b[maxn],c[maxn],a0[maxn],b0[maxn]; int cmp(const void *a,const void *b) {     return *(int *)a-*(int *)b; } void hsort(int l,int r) {      int i=l,j;      while ((i<<1)<r)      {            j=i*2;            if (j<r&&c[j]>c[j+1])j++;            if (c[i]>c[j]) {swap(c[i],c[j]);swap(a[i],a[j]);swap(b[i],b[j]);i=j;}else break;      } } int main() {     int i,j;     cin>>n;     for (i=1;i<=n;i++) cin>>a0[i];     for (i=1;i<=n;i++) cin>>b0[i];     qsort(a0+1,n,sizeof(int),cmp);     qsort(b0+1,n,sizeof(int),cmp);     for (i=1;i<=n;i++)     {         c[i]=a0[i]+b0[1];         a[i]=i;         b[i]=1;     }     for (i=n/2;i>0;i--) hsort(i,n);     for (i=1;i<=n;i++)     {         if (i>1) cout<<" ";         cout<<c[1];         c[1]=a0[a[1]]+b0[++b[1]];         hsort(1,n);     }     return 0; }
user-0 提问: in_suspend :1后面这个1是啥意思？

回复:
user: user-1
content: http://en.wikipedia.org/wiki/Bit_field  http://baike.baidu.com/link?url=Fo1JQsVRi6e2RDBYap4mUh3qRWHfcG4mVS4S6nTPX8Gyga4-OGKBho1SRSBfUDn9jEcq8TTFy3QCC76eq4vSc_

user: user-2
content: 表示给in_suspend分配1bit的空间
user-0 提问: 求大神！！图像文本识别的主要步骤都有什么？？？？

回复:
user: user-1
content: 请原谅我才疏学浅，你给的公式我没有看过 详细一下你阅读的论文  你找出eigen value的目的是什么？ 如果你要找的是eigen value opencv有提供（cornerEigenValsAndVecs）  我之前接触harris corners的主要是靠eigen values 来判断那是edges,smooth regions或corners 可以参照这两篇  http://qtandopencv.blogspot.com/2013/10/harris-corners-00-principle.html http://qtandopencv.blogspot.com/2013/10/harris-corners-01-implement-by-opencv2.html  第一篇解释harris corners的原理，如何利用sobel求出hessian matrix 以及如何简化eigen values的推导过程 第二篇分析openCV如何实作harris corners  希望这可以帮到你

user: user-1
content: openCV全面停止开发c的api很久了 最好别继续使用这些已经被deprecated(不建议使用，停止开发)的api 改用c++的api会让你的人生轻松很多 而且新功能也只提供c++的api而已  官方声明 引用Will drop C API support soon. C++ is much better 连接 http://answers.opencv.org/question/17546/opencv-will-drop-c-api-support-soon/  c  double calcGradients(const IplImage *src,                       int aperture_size = 7) {     CvSize sz = cvGetSize(src);          IplImage* img16_x = cvCreateImage(sz, IPL_DEPTH_16S, 1);      IplImage* img16_y = cvCreateImage(sz, IPL_DEPTH_16S, 1);      cvSobel(src, img16_x, 1, 0, aperture_size);     cvSobel(src, img16_y, 0, 1, aperture_size);          IplImage* imgF_x = cvCreateImage(sz, IPL_DEPTH_32F, 1);     IplImage* imgF_y = cvCreateImage(sz, IPL_DEPTH_32F, 1);     cvScale(img16_x, imgF_x);     cvScale(img16_y, imgF_y);          IplImage* magnitude = cvCreateImage(sz, IPL_DEPTH_32F, 1);     cvCartToPolar(imgF_x, imgF_y, magnitude);     double res = cvSum(magnitude).val[0];          cvReleaseImage(&magnitude );     cvReleaseImage(&imgF_x);     cvReleaseImage(&imgF_y);     cvReleaseImage(&img16_x);     cvReleaseImage(&img16_y);          return res; }   c++  double contrast_measure(Mat& img) {     Mat dx, dy;     Sobel(img, dx, 1, 0, 3, CV_32F);     Sobel(img, dy, 0, 1, 3, CV_32F);     magnitude(dx, dy, dx);          return sum(dx)[0]; }   那些还在怂恿你使用c的api的人应该被唾弃  引用unless you are targeting embedded platforms,  there’s no point to using  the old methods (unless you’re a masochist  programmer and you’re asking for trouble). 连接 http://docs.opencv.org/doc/tutorials/core/mat_the_basic_image_container/mat_the_basic_image_container.html  c的api,big projects，embedded devices会逐渐被c++取代不是没有道理的

user: user-0
content: 这个length是已知的，还有c1和c2在不同角度取不同的值，一共4个方向：0,45,135,180
user-0 提问: 不相邻随机数问题

回复:
user: user-1
content: 每次生成随机数的时候 判断与前一个数的绝对值是否大于1  大于就加入记录表 不大于就直接丢弃 重新获取随机数

user: user-2
content: 多一次判断条件再取一次随机数就好了！

user: user-3
content: 只有10个用排除法也可以。 或者，每次把选取的数据，相邻的数据抽去，再随机抽取。

user: user-0
content: to wangliangffaflgh: 先谢谢你的回复， 这个算法能保证一定不相邻吗》

user: user-4
content: #include <stdio.h> #include <stdlib.h> #include <time.h>  int myrandom() {         srand(time(NULL));         return (rand() % 100) + (rand() % 50); }  int main(void) {         int i;         for(i=1; i<=10; i++)         {                 printf("%d\n", (i *  myrandom()) + (i+ myrandom()));         }         return 0; }
user-0 提问: VC6.0好多头文件找不到路径怎么办啊？？？

回复:
user: user-1
content: 环境变量啊，你要明白编译器找头文件的方式。

user: user-2
content: http://www.easyx.cn

user: user-3
content: tc，BC3.1，BC4.5 都可以。 MS C++ 7.0 也可以。 MS quick C,C++ 也可以。 再不然 Watcom C也可以。

user: user-4
content: 安装有问题, 重装

user: user-5
content: 是找不到路径还是找不到这个头文件？找不到路径把库文件设置到include那个文件夹下，没有这个头文件就从其他的地方拷贝一下，vc6太老了，有好多不支持的

user: user-6
content: 设置一下项目的头文件路径呗，在属性里面 用vs2012呗，超好用

user: user-0
content: tc不能用鼠标，还不能输入汉字……忒不习惯！

user: user-7
content: 引用 7 楼 u011873193 的回复:引用 6 楼 user-7 的回复:bios.h在vc下编译不过的还有好多其他的也是这样！  试试tc编译

user: user-0
content: 引用 6 楼 user-7 的回复:bios.h在vc下编译不过的还有好多其他的也是这样！

user: user-7
content: bios.h在vc下编译不过的

user: user-0
content: 引用 1 楼 wangdahu888 的回复:设置一下项目的头文件路径呗，在属性里面 用vs2012呗，超好用 提示为坏的路径（Cannot open file.坏的路径）

user: user-0
content: 是坏的路径
user-0 提问: 一元多项式的小问题

回复:
user: user-0
content: 这样子还是outputPoly函数有问题啊。。。 //一元多项式的表示与相加运算  #include<stdio.h> #include<stdlib.h>   typedef struct polyNode { 	float coef;          //系数项        	int exp;            //指数项  	struct polyNode *next; }polyNode, *Poly;  void outputPoly(Poly A) { 	Poly p = A;    while(p->next){      printf("%.1f*x^%d",p->coef,p->exp);      p = p->next;      printf("+");    }    printf("\n"); }  void PolyAdd(Poly A, Poly B) { 	Poly pa = A->next, pb = B->next,rear = A, q; 	while(pa&&pb){ 		if(pa->exp<pb->exp){ 			rear->next = pa; 			rear = pa; 			pa = pa->next; 		} 		else if(pa->exp>pb->exp){ 			rear->next = pb; 			rear = pb; 			pb = pb->next; 		} 		else{ 			pa->coef+=pb->coef; 			if(pa->coef!=0.0){ 				rear->next = pa; 				rear = pa; 				pa = pa->next; 				q = pb; pb = pb->next; free(q); 			} 			else{ 				q=pa; pa=pa->next; free(q); 				q=pb; pb=pb->next; free(q); 			} 		} 	} 	if(pa) rear->next = pa; 	else   rear->next = pb; 	free(B); }  void creatPoly(Poly *q, int n) { 	Poly p,r;                            //p要加入的结点  	int i = 0; 	//printf("请输入%d组项数系数项和指针项（逗号隔开）",n); 	*q = (Poly)malloc(sizeof(polyNode)); 	//(*q)->next = NULL; 	r = *q; 	while(i<n){ 		p = (Poly)malloc(sizeof(polyNode)); 	    printf("输入第%d项的系数和指数(以 , 分隔):",i+1); 		scanf("%d,%d",&p->coef,&p->exp); 		r->next = p; 		r = p; 		i++; 	} 	r->next = NULL; }  void main() { 	int i, j; 	Poly p, q; 	     printf("输入多项式的项数:");     scanf("%d",&i); 	creatPoly(&p, i); 	outputPoly(p); 	printf("输入多项式的项数:");     scanf("%d",&j); 	creatPoly(&q, j); 	outputPoly(q); 	PolyAdd(p, q); 	outputPoly(p); }

user: user-0
content: 我的源代码就是这样子的，还是不行的。。。

user: user-1
content: void outputPoly(Poly A) {    Poly p = A;    while(p->next){    printf("%.1f*x^%d",(*p)->coef,(*p)->exp);//改为printf("%.1f*x^%d",p->coef,p->exp);    p = p->next;    printf("+");    }    printf("\n"); }

user: user-2
content: if (p->next) 		{ 			printf("+");   // 这里是下一个不为空时才打印+ 上面错了 		}

user: user-2
content: typedef struct polyNode { 	float coef;          //系数项        	int exp;            //指数项  	struct polyNode *next; }polyNode;  typedef struct polyNode* Poly;      // 定义结构的指针  void outputPoly(Poly A) { 	Poly p = A; 	while(p->next){ 		printf("%.1f*x^%d",p->next->coef,p->next->exp); // 不能打印p的值 从p的next开始 		p = p->next; 		if (p) 		{ 			printf("+");          // 最后一项不打印+ 		} 	} 	printf("\n"); } void creatPoly(Poly *q, int n) { 	Poly p,r;                            //p要加入的结点  	int i = 0; 	//printf("请输入%d组项数系数项和指针项（逗号隔开）",n); 	*q = (Poly)malloc(sizeof(polyNode)); 	//(*q)->next = NULL; 	r = *q; 	while(i<n){ 		p = (Poly)malloc(sizeof(polyNode)); 		printf("输入第%d项的系数和指数(以 , 分隔):",i+1); 		scanf("%.1f,%d",&p->coef, &p->exp);     // float 用%f 		printf("%.1f,%d\n",p->coef,p->exp);     // float 用%f 		r->next = p; 		r = p; 		i++; 	} 	r->next = NULL; }