C语言中有两个很牛x的运算符,就是移位运算符。这就使得我们可以对一个数的某个位进行独立的操作。例如,一个unsigned int类型就可以变成32个bool型来使用。当然,没什么人这么疯狂罢了。。纯属闲的蛋疼233那么,移位运算符我们该怎么使用呢?首先,``就是向右移动了。当然!移位运算符没有这么简单。其中隐藏了几个陷阱。比如,因为移位而空出来的位是用什么来填充的呢?是0呢?还是1?首先,对于左移(
C语言中有两个很牛x的运算符,就是移位运算符。这就使得我们可以对一个数的某个位进行独立的操作。例如,一个unsigned int类型就可以变成32个bool型来使用。当然,没什么人这么疯狂罢了。。纯属闲的蛋疼233那么,移位运算符我们该怎么使用呢?首先,``就是向右移动了。当然!移位运算符没有这么简单。其中隐藏了几个陷阱。比如,因为移位而空出来的位是用什么来填充的呢?是0呢?还是1?首先,对于左移(
今天才Linux下用math.h库的pow()函数,gcc编译的时候报错返回:对‘pow’未定义的引用查了下资料,需要在gcc编译的时候加上-lm参数才能正常编译。这是为什么呢?再查了下资料: 使用math.h中声明的库函数还有一点特殊之处,gcc命令行必须加-lm选项,因为数学函数位于libm.so库文件中(这些库文件通常位于/lib目录下),-lm选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找。本书用到的大部分库函数(例如printf)位于libc.so库文件中,使用libc.so中的库函数在编译时…
以前,经常使用while((ch=getchar()!=EOF)来作为程序读取输入的结束。但是,今天发现,这个EOF的类型是整形。然而,我们经常是将ch定义为字符型:char ch;这样就造成了一个问题:getchar()读取输入的EOF的时候,读取的是整形数。然而,这个数字比char类型(-128~127)要大.所以,getchar()在赋值给ch的时候,会造成该数值被截短的现象。然后ch经过提升为整形之后再与EOF作比较的时候是不会相等的。这就有可能使得程序在输入EOF的时候并不会停止。或者是在键入\377的时…
通过apt-get这个神器,在Ubuntu下搭建Apache+PHP+Mysql这个环境,真是太容易了。仅仅几条命令的事情。。。感觉和那些一键安装包差不多了。。基本免去了设置的步骤。恩,唯一的设置还是Mysql的root密码。那么,代码如下: sudo apt-get install apache2 //安装Apache2 sudo apt-get install php5 //安装PHP5 sudo apt-get install libapache2-mod-php5 //貌似是PHP和Apache连接mod …
这个问题主要是fcitx的环境变量没有设置好。因为我是只装了wine-qqintl,所以我只需要去修改qqintl的启动脚本即可。首先,通过whereis wine-qqintl命令得到启动脚本地址。打开,在前几行添加如下几行代码: export XMODIFIERS="@im=fcitx" export GTK_IM_MODULE="fcitx" export QT_IM_MODULE="fcitx" 保存,退出,重启qq即可。如果是需要其他的应用输入中…
闲来无事写写工具(顺便翘课不过,这还是有点好处的,至少让我对Python的基本语法熟悉了点。那么,下午写的程序是一个Base64和MD5加密解密的程序。很简单,主要用到了hashlib和base64这两个库。函数都是现成的,所以只是简单的像搭积木那样搭一个程序出来。而且,有这两个库,可以随时拓展更多种加密方式,像是sha啊什么的。要注意的就是下面几点:1)input()和raw_input()的区别。input()是一个很坑爹的函数,个人感觉。因为,它要求的输入的字符串要加双引号?这不是反人类吗??数字的话,直接输…
经过了一晚上的努力,终于把这个工具做的能看了。。早上的版本只是基本功能罢了。这次的改进版提供了手动输入和从文件导入两种输入方式。能够自定义Ping的次数。同时,将各个功能模块化,代码量也变大了好多。。总之,这个Ping工具就这样了。 而且,在写这个小工具的时候,发现了自己在编程方面的很大不足,同时也发现了几个编程的小陷阱。1)scanf函数的换行符问题。在scanf()读取完之后,会留下一个换行符\n。这就会导致一个问题,我成为“换行符污染”。简而言之,就是会多出换行符导致下一次读取输入的时候因多余的换行符而提前终…
今天上课没听课(咳咳,真心听不懂),然后想想自己好歹买了vpn,翻个墙玩玩多好。然后,苦于GreenVPN在Linux上没有客户端。。那么,手动建立VPN使可以,但是用那一条线路能够比较快,这是个问题。一般测试线路都是看Ping值。于是,就开始写C语言的批量Ping工具。主要思路是这样的。 图表1.png 第一次画流程图,不要在意。。 对于在C语言中如何使用Ping命令,我是用system()来调用系统命令。因为我不会用管道传输(弱渣),所以只能建立临时文件了。那么,代码如下: #include #include …
因为是最简单的。所以,这个程序用创建一个额外的文件来判断程序是否多开。那么,就是在程序里面,先尝试打开一个.temp文件。若打不开,则创建创建这个文件。若能够打开,则判断已经有一个程序在运行中,就exit()。那么,简单的代码来了: #include #include int main() { FILE * fp; fp=fopen(".temp","r"); if(fp==NULL) fp=fopen(".temp","w"); el…
Python里面自带hashlib库,有几种加密解密的函数,包括md5。调用md5函数的大致步骤如下: import hashlib m=hashlib.md5(); m.update("String"); m.hexdigest(); 知道了这个就很好写这个小程序了。首先,要求用户输入一个文件路径和一个正确的用来校验的md5值。这里,因为文件基本上会包含.等字符,所以我们要用raw_input()函数来获取路径。然后,读取文件内容,进行加密。最后,对比文件内容加密出来的md5和校验值,就可以知…