编程经验
善良超锅锅
hello world!
展开
-
今日程序今日写
近来发现如果当时想好的一个程序,思路清晰。打算过几天再写出来。到了真的过几天后发现自己当初信心百倍的程序很难写出来,思路一点都不清晰。即使写出来了,也花费了很多时间。 看来不能相信自己的记忆。今日程序今日写。千万别托。原创 2011-12-03 23:20:42 · 893 阅读 · 0 评论 -
文件IO遇上中文字符
本来想用文件保存几个字符串,其中还有汉字的字符串。因为是用MFC做的,所以我自然想到用MFC提供的CFile类来文件IO。但是CFile不能一条一条记录(用回车符分隔的字符串)的读取。于是我改用CStdioFile类,可是CStdioFile::WriteString和Readstring进行文件IO时对中文的支持不好,要么是不能写入中文到文件中,用么是不能从文件中读入中文。文本模式和二进制模式我原创 2013-03-15 02:12:58 · 1505 阅读 · 0 评论 -
警告: 隐式声明函数‘close’ [-Wimplicit-function-declaration]
在Ubuntu下,用套接字编程时用到了close函数来关闭套接字,没想到编译的时候遇到了警告: 警告: 隐式声明函数‘close’ [-Wimplicit-function-declaration]man一下close原来需要包含#include 本以为close能关闭套接字和文件描述符,就会和文件操作函数或套接字函数定义在同样的文件中。看来是想当然了。原创 2013-04-26 09:20:22 · 10209 阅读 · 3 评论 -
这三天低效率开发的总结,我都做了些什么啊?
4月15日 一大早起来,本来想测试一下服务端程序。把二手笔记本的ubuntu打开,把自己原来笔记本的windows打开。客户端运行在windows上,服务端运行在ubuntu上。测试了一下发现服务端发给客户端的数据通道地址不对。在ubuntu上改了一下服务端代码。然后向把代码推送到GitHub上,发现不能推送。Git还是使用不熟练。百度了一下,折腾好一会搞定了。原创 2013-04-18 19:29:03 · 1516 阅读 · 1 评论 -
MFC最好不要在子线程中操控界面上的控件
今天遇到一个bug,烦了我大半天。最后在QQ群中有人给我指出来了。感觉白费了很多时间。我在一个窗口的某条信息处理函数中new了一个进度条控件对象。然后创建一个子线程,然后在子线程中delete这个控件对象。没想到每到这个delete的地方,程序就会崩溃。提示:Debug Assertion Failed! xxx.exeFIle:xxx.cppLINE:1019 For i原创 2013-05-01 18:06:48 · 5189 阅读 · 2 评论 -
大二到大三最近一年的项目经验总结
编码前先分析,设计(需求,技术方案,实现,UML图)。把重要的决策放在设计阶段,而不是编码阶段。否则会越来越乱。 选择现成的最适合的工具(语言,库,协议,技术方案),不要重复造轮子。站在前人的肩膀上。 编码应该是最简单直接的工作,分析和设计也就是解决问题的思路才是核心。 理论是很重要,对实际有指导作用。站在巨人的肩膀上。 不要畏难,我们是专业的。感到难都是因为懒惰。原创 2013-06-05 13:08:43 · 1707 阅读 · 0 评论 -
使用waveOutPrepareHeader函数时特别注意,参数LPWAVEHDR pwh不能用保存在栈变量
今日个用waveOut系列函数播放wav文件时,发现老接收不到MM_WOM_DONE消息。调试了好久,发现是我在调用waveOutPrepareHeader函数时第二个参数LPWAVEHDR pwh用的是栈中的自动变量。函数运行完后pwh结构也没了,所以就再也收不到MM_WOM_DONE消息了。改为new一个WAVEHDR结构变量后,终于能收到MM_WOM_DONE消息了。原因是因为这个参数时一个原创 2013-09-30 23:35:07 · 2587 阅读 · 0 评论 -
C语言变量类型隐式转换小陷阱
int型变量可以直接和unsigned int 比较大小吗?不可以。 问题描叙:这个问题是我在写kmp算法时遇到的。int Index_KMP(char *S, char *T, int pos){ int next[strlen(T)]; get_next(T,next); int len = strlen(S);原创 2013-09-20 14:26:37 · 2241 阅读 · 0 评论 -
第一次使用Genymotion遇到的问题:for an unknown reson,VirtualBox DHCP has not assigned an IP address to virtual
今天想使用一些Genymotion虚拟机。一路安装下来,还算顺利。创建好虚拟设备后,开启时遇到了问题。for an unknown reson,VirtualBox DHCP has not assigned an IP address to virtual...看来是virtualbox网络设置问题。折腾了一番,终于解决了。记录一下解决方法。1.打开Vir原创 2014-03-14 11:10:30 · 13887 阅读 · 2 评论 -
C与C++混淆后常犯的错误
1.C语言中没有引用传递,可用传递指针方式代替。2.C语言函数不支持默认参数和函数重载。只能定义不同的函数。3.C89中不能随时随地定义变量。4.C89中木有bool类型。可以通过int模拟。或用enum枚举模拟。或#define false 05.C++中的枚举类型变量不支持自加,自减运算,用之前要强制转换为整型后再转回来。待续。。。原创 2011-12-18 23:47:42 · 1220 阅读 · 2 评论 -
一次编程大作业的心得
前几天(准确说从前两个星期就断断续续开始了,只是前几天才正式编码)完成了网络程序设计的大作业:一个即时通讯程序。居然有3天时间在debug。编程的过程中被bug折磨的内分泌失调。使我不得不总结一下:1.在动手写代码之前应该规划一下程序的框架。思路清楚之后才开始敲代码。要不后面会反复修改,劳神伤力。2.具体到通信程序在写代码之前要约定好通信协议,通信的数据类型要约定好,两边都能支原创 2012-12-24 23:18:35 · 7076 阅读 · 7 评论 -
记一个烦了我一下午到半夜的编程错误!free(): invalid next size (fast): 0xb73004e8 ***
调试了半天,定位到是delete引起的奔溃,我怀疑了好久是不是申请内存后,指针操作出了问题,导致向没申请的内存区域写入了东西,导致释放出了问题。可是这个delete有时候出问题,有时候又不会。后来在校论坛上发帖,得到了提醒。可能是我申请内存和释放内存的语句出了问题,我居然之前没想到过这一点。是这样的:我原来的代码为:char *msg2 = new char(2+(原创 2012-12-23 01:01:26 · 8765 阅读 · 13 评论 -
C语言中没有引用传递,谨记!
如果在.C文件中出现函数参数为引用则出现莫名其妙的错误void InsertSort(SqList &L);报错error C2143: syntax error : missing ')' before '&'原创 2011-12-07 23:59:00 · 5825 阅读 · 4 评论 -
为什么内存泄露后文件IO老失败!不管是fgets还是fread都失败
今天遇到一个问题,在程序的前一段申请了一段内存调用的一个函数申请了内存没有释放。再调用第二个函数实现文件IO发现老失败。我前后检查了fread和fgets的各个参数都没错。单步调试到文件读入的部分就崩溃。搞了好久实在不解为什么。后来网上有人说有可能是内存泄露了。我检查了程序,发现前面调用的函数造成了内存泄露。加了一条free语句后,问题解决了。但是我是不明白为什么前面内存泄露会导致后面原创 2011-12-11 23:54:59 · 1999 阅读 · 1 评论 -
从文件读入数据块时用feof(fp)判断文件结尾真的保险吗?
今天用文件输入时发现了一个值得注意的问题。先看程序:#include #include int main(void) { FILE*in=fopen("1.txt","r"); int a,b; if(in==NULL) { printf("error:cannot open infile !\n"); r原创 2011-12-22 22:29:11 · 3381 阅读 · 0 评论 -
2011及大二上总结
大二上就这么过去了。进大学后一直想做个优秀的学生。后来听说真正优秀的人会在大二会浮出水面。于是在大二开始前就想好了要努力。因为我这样的菜鸟错过了大二的机会就不太可能有变成牛人的机会了。明明想好要努力的,结果却让人失望。一个学期结束了,回头小结一下自己的收获,发现什么都没有。期末考试连挂三科。连自己原来擅长的数学分析都挂了。高中时明明物理是我的强项,期中考试也挂了。概率论本来以为很简单的结果挂的很惨原创 2012-01-14 17:16:41 · 1929 阅读 · 26 评论 -
编程爱好者网站试题中心 的一道题:关于*(p++)
原以为这道题会很简单,没想到做错了。printf("%d",*(p++));是先打印出*p的值2,再p自加,然后p指向a的第二个元素4.p++是先参与所在表达式的运算再自加,即使有括号也如此。原创 2012-03-10 10:50:57 · 2041 阅读 · 5 评论 -
关于CPictureEx类播放gif文件只能显示一帧的问题
为了给软件登陆界面做一个动画效果,决定用gif动画显示。 而mfc没有能直接播放gif的标准控件。在网上找到了CPictureEx类。安装一篇教程写好整个工程后,发现只能显示gif的一帧。没有动画效果了。原来是把gif资源用向导添加进工程后gif图片遭到了破坏。 于是想到不用向导添加,而是在程序中动态加载gif文件。所以在加载gif图片时用BOOL CPictu原创 2012-08-22 14:50:34 · 3292 阅读 · 1 评论 -
我的大二总结
今天是2012/8/26,暑假终于结束了。哥正式成为大三的学长了。好吧,来总结一下哥的大二吧!关于学习: 这个学期还是挂科了。挂了信号和模电,却一点都不想补考,因为对这两门学科真的没什么兴趣。毛概居然补考又挂了。可能是因为我毕业后偏向于找工作而不是考研,所以对于学习不是最看重。比较偏重于编程能力的培养。可是技术上又不是大牛。貌似我一无所得。编程技术上没什么大的进展也许是因为我太不原创 2012-08-26 16:02:53 · 3009 阅读 · 19 评论 -
记一个程序编译错误: warning: missing sentinel in function call [-Wformat]
今天写GTK+程序时,调用了一个可以接受任意个参数的函数,结果编译时报:warining: warning: missing sentinel in function call [-Wformat] 上网查一下,原来可接受任意个参数的函数在调用时,必须给它传的最后一个参数是NULL。再看了一下所调用函数的说明,真的是这样。估计它是根据检测NULL来判断参数的个数。原创 2012-11-27 11:43:15 · 6642 阅读 · 4 评论 -
关于在main.cpp文件中包含另一个.cpp文件的错误及原因
今天打开自己以前写代码突然觉得在man函数中如果要用的很多自己实现的函数,如果把它们都放在main.cpp文件中太臃肿了。调试起来特别不方便。能不能把这些自己实现的函数放到另外一个文件中呢? 可是又不能把这些函数放在.h文件中。因为书上说.h文件中做好只放结构体、类等的申明,函数实现最好放在.cpp文件中。好吧那我就把这些函数放到一个.cpp文件中吧。所以我就新建了一个...原创 2011-12-03 10:53:09 · 8071 阅读 · 8 评论 -
fscanf读入文件时错误的原因?
今天想弄一下二进制文件读写(后来才知道fscanf和fprintf不能用于二进制文件的读写,但下面的总结对ASSCII文件适用。)发现一个问题,搜了好久也没解决如果二进制文件写入的时候,用fprintf写入多个数据时,数据之间没用空格隔开如下面fprintf(out,"%c%d%d%d%d",HT[i].data,HT[i].weight,HT[i].parent,HT[i].lchild,HT原创 2011-12-11 02:21:33 · 10559 阅读 · 7 评论