博文
Linux下C编程注意事项(2007-01-26 19:22:00)
摘要:
一般可以用gcc编译器
1. 头文件
象conio.h应该变成curses.h
2. 没有itoa函数
itoa?不对吧,标准C/C++里根本没有这个函数。即使在Windows平台下某些编译器提供了该函数[3],没有任何移植性不说,还只能解决int类型(也许其他函数还可以解决long、unsigned long等类型),浮点类型又怎么办?当然,办法还是有,那就是:sprintf。
char s[100];
sprintf(s, "%f", 123.123456);
3. 关于sqrt,sin和cos函数
就算是引入math.h头文件,也不会找到sqrt,sin和cos函数。应该用链接库来解决。
有时候我们使用了某个函数,但是我们不知道库的名字,这个时候怎么办呢?很抱歉,对于这个问题我也不知道答案,我只有一个傻办法.首先, 我到标准库路径下面去找看看有没有和我用的函数相关的库,我就这样找到了线程(thread)函数的库文件(libpthread.a). 当然,如果找不到,只有一个笨方法.比如我要找sin这个函数所在的库. 就只好用 nm -o /lib/*.so|grep sin>~/sin 命令,然后看~/sin文件,到那里面去找了. 在sin文件当中,我会找到这样的一行libm-2.1.2.so:00009fa0 W sin 这样我就知道了sin在 libm-2.1.2.so库里面,我用 -lm选项就可以了(去掉前面的lib和后面的版本标志,就剩下m了所以是 -lm).
4. Makefile出现missing separator的错误
原因是目标声明行下面的命令行必须用Tab键分开(而不是空格)
PG: PG.o
[ Tab键 ]gcc -o PG -O -O2 -lm /lib/ld-2.2.93.so PG.o
PG.o: PG.c pointgroup.h
[ Tab键 ]gcc -c -O -O2 PG.c
clean:
[ Tab键 ]rm -f *.o
5. 注意文件的DOS格式字符
调试的时候应该注意文件可能有DOS格式字符,必须先用如下命令去掉文件中的DOS格式字符:
tr -d <file> tmp_file
mv tmp......
word自定义某一页的页眉或页脚的方法(2007-01-26 19:21:00)
摘要:word自定义某一页的页眉或页脚的方法
2006-12-21 21:57:38 / 个人分类:个人原创
倏子:
word怎么自定义某一页的页眉或页脚?
忽子:
你打开word,跟着我操作。
倏子:
好的,可以开始了
忽子:
插入 -> 分隔符...
忽子:
找到了吗?
倏子:
找到了
忽子:
在弹出的小对话框中选择:
忽子:
“分节符类型”-下一页
倏子:
可以了
忽子:
确定
倏子:
好的。
忽子:
再在第二页也插入这么一个分节符
倏子:
可以了
忽子:
然后......
My LaTeX Tips(2007-01-26 19:20:00)
摘要:
My LaTeX Tips
1. 如何让TeX找到你最新加入的宏包(*.sty)文件?
最简单的方法就是再你将你的*.sty文件放入CTeX目录树下后,在DOS下敲入texhash命令即可。否则,
TeX编译会找不到你的*.sty文件。
详细解释:
TEX 系统通过这个数据库记录了所需要的各种文件的名字和具体目录位置。每次你往系统中添加文件
后,都要记得刷新这个数据库,否则TEX 有可能找不到需要的文件。
刷新文件名数据库的具体命令取决于你使用的TEX 系统。teTEX 和fpTEX 的命令是texhash
MiKTEX 用户可以在Dos 窗口中输入以下命令
initexmf --update-fndb
或者使用MiKTEX 提供的图形界面工具MiKTEX Options。在开始菜单中找到MiKTEX Options,打开点击
General 页上的Refresh Now 按钮即可。
2. input{file}与include{file}
前者不换页,后者换页。
3. 更改插图题头(默认为:Figure 1: 改为:图 1 )
%% 用caption2宏包
\renewcommand\figurename{\textbf{图}} % 插图题头
%% 定义如 "图(表)1: 示例" 中的间隔符号,如 ":" ,这里定义为空
\renewcommand{\captionlabeldelim}{}
%定义图表编号与标题间的间隔距离
\renewcommand{\captionlabelsep}{\hspace{1em}}
4. 如何使生成的pdf文本粘贴无乱码?
今天是学习LaTeX的第3天,越来越有兴趣了。 :P
我习惯在WinEdt中直接用CCT&LaTeX按钮生成ps文件,然后再用ps2pdf按钮转成pdf文件。但结果发现生成的pdf文件中,复制粘贴其中的文本出来却是乱码 :blink: 。后来,我终于摸索出一个办法:
生成dvi文件后,用dvipdfmx + 文件名.dvi命令去生成pdf文件,这时复制粘贴其中的文本出来的就不再是乱码了,而且中文搜索也没问题。
5. 自带的guide一般在以下两个地方:
如果是系统安装的p......
N年前写的抢24扑克游戏(2007-01-26 19:20:00)
摘要:
感觉算法还是有些笨,不过现在已没时间改进它了。
源代码如下:
<html>
<!--
######################################################
# Copyright 2002-2003 #
# #
# Written by neweroica #
######################################################
-->
<title>neweroica的抢24游戏</title>
<!--------------作者:neweroica(aqyw)---------------->
<h2>24点游戏初解</h2>
<h4>作者:neweroica(aqyw)</h4>
<input type=hidden name=a1>
<input type=hidden name=b1>
<input type=hidden name=c1>
<input type=hidden name=d1>
<table>
<tr>
<td......
汉字简体繁体转换(2007-01-26 18:36:00)
摘要:
这是我几年前写的Javascrīpt代码,当时纯粹是觉得好玩,好像是发在无忧脚本(51js)论坛上了。结果没想到这个代码居然大受欢迎,甚至有些台湾网站也引用了我做的这个小工具。看来一个受欢迎的代码可以并不复杂,关键是要实用。
charPYStr文件:
function charPYStr(){
return '画一乙二十丁厂七卜八人入乂儿九匕几刁了乃刀力又乜三干亍于亏士土工才下寸丈大兀与万弋上小口山巾千乞川亿彳个么久勺丸夕凡及广亡门丫义之尸已巳弓己卫孑子孓也女飞刃习叉马乡幺丰王井开亓夫天元无韦云专丐扎廿艺木五支厅卅不仄太犬区历友歹尤匹厄车巨牙屯戈比互切瓦止少曰日中贝内水冈见手午牛毛气壬升夭长仁仃什片仆仉化仇币仂仍仅斤爪反兮刈介父爻从仑今凶分乏公仓月氏勿风欠丹匀乌勾殳凤卞六文亢方闩火为斗忆计订户讣认讥冗心尹尺夬引丑爿巴孔队办以允邓予劝双书毋幻玉刊末未示击邗戋打巧正扑卉扒邛功扔去甘世艾艽古节艿本术札可叵匝丙左厉丕石右布夯龙戊平灭轧东匜劢卡北占凸卢业旧帅归目旦且叮叶甲申号电田由卟叭只央史叱叽兄叼叩叫叻叨另叹冉皿凹囚四生失矢氕乍禾仨仕丘付仗代仙仟仡仫伋们仪白仔他仞斥卮瓜乎丛令用甩印氐乐尔句匆犰册卯犯外处冬鸟务刍包饥主市庀邝立冯邙玄闪兰半汀汁汇头汈汉忉宁穴宄它讦讧讨写让礼讪讫训必议讯记永司尻尼民弗弘阢出阡辽奶奴尕加召皮边发孕圣对弁台矛纠驭母幼丝匡耒邦玎玑式迂刑邢戎动圩圬圭扛寺吉扣扦圪考托圳老圾巩执扩圹扪扫圯圮地扬场耳芋芏共芊芍芨芄芒亚芝芎芑芗朽朴机权过亘臣吏再协西压厌厍戌在百有存而页匠夸夺夼灰达戍尥列死成夹夷轨邪尧划迈毕至此乩贞师尘尖劣光当吁早吐吓旯曳虫曲团同吕吊吃因吸吗吆屿屹岌帆岁回岂屺则刚网肉凼囝囡钆钇年朱缶氘氖牝先丢廷舌竹迁乔迄伟传乒乓休伎伏伛优臼伢伐仳延佤仲仵件任伤伥价伦份伧华仰伉仿伙伪伫自伊血向囟似后行甪舟全会杀合兆企汆氽众爷伞创刖肌肋朵杂夙危旬旭旮旨负犴刎犷匈犸舛各名多凫争邬色饧冱壮冲妆冰庄庆亦刘齐交次衣产决亥邡充妄闭问闯羊并关米灯州汗污江汕汔汲汐汛汜池汝汤汊忖忏忙兴宇守宅字安讲讳讴军讵讶祁讷许讹论讼农讽设访诀聿寻那艮厾迅尽导异弛阱阮孙阵阳收阪阶阴防丞奸如妁妇妃好她妈戏羽观牟欢买纡红纣驮纤纥驯纨约级纩纪驰纫巡寿玕弄玙麦玖玚玛形进戒吞远违韧运扶抚坛抟技坏抔抠坜扰扼拒找批扯址走抄汞坝贡攻赤圻折抓扳坂抡扮抢扺孝坎坍均坞抑抛投抃坟坑抗坊抖护......
DOS格式的文件转成Unix格式的文件(2007-01-26 18:34:00)
摘要:
/* win2unix */
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "string.h"
int main(int argv, char * args[]){
FILE *fp1,*fp2;
char c;
char s[100];
if(argv<2){
printf("Usage: win2unix input-file-name [output-file-name]");
return 1;
}
if((fp1=fopen(args[1],"rb"))==NULL){
printf("Error: Fail to open %s.",args[1]);
return 1;
}
if(argv==2){
sprintf(s,"u_%s",args[1]);
}
else{
sprintf(s,"%s",args[2]);
if(strcmp(s,args[1])==0){
printf("Error: Output f......
未名BBS的www一个漏洞的利用(2007-01-26 18:29:00)
摘要:
1.漏洞的发现
我们知道在telnet方式下可以设置图片签名档,设置格式就是:
<img>图片的URL</img>
这样当你设置好了之后,当你发表文章后,在www方式下,相应的网页中就会自动生成以下H
TML代码:
<img src="图片的URL" border=0>
这个原理相信大家都明白,但是如果仔细推敲和发挥想像就会做到出人意料的效果:
试想,如果我的图片签名档这样设置:
<img>"> 任何代码 <q "</img>
那么在www方式下你的文章所在的页面中相应的HTML代码就是:
<img src=""> 任何代码 <q "" border=0>
现在你会意识到什么了?那就是我们可以在未名BBS的www方式下加入任何代码(浏览器支持
的任何代码)!!!于是我们就可以充分发挥我们的想
像来做我们想玩的东西。
2.漏洞的利用技巧
在我们准备动手之前,可以先做一个简单测试:
将签名档设为: <img>"> alert() <q "</img>
然后到test板发一篇文章。
这样,在www下点击你的文章时就会看到弹出alert()窗口。
但是很快你就会发现两个破绽:
1) 图片签名档由于img的src="",找不到路径,因而出现了带叉的图片空框,这有可能被细
心的人注意。
2) 要是在telnet下看你的文章时,就会发现你的签名档是一大堆代码,这更会引起管理员的
怀疑的。
所以,接下来我们要设法解决这些问题:
对于第一个问题,可以将签名档设置成:
<img>" style="display:none;"> 任何代码 <q "</img>
这样图片就不显示出来了。
对于第二个问题,可以利用“障眼法”,只需将签名档设置成:
一个文字签名档 足够长的空格 <img>" style="dis......
在option下拉菜单选项中添加图片(2007-01-26 18:28:00)
摘要:
<h2 align=center>option下拉菜单选项中添加图片(原创)</h2>
<h3 align=center>作者 neweroica</h3>
<h3 align=center>2002-11-21 14:33</h3>
<scrīpt>
//*****************************************************************
//
// 作者 neweroica
// -11-21 14:33
// 欢迎大家引用,但请保留此版权信息,谢谢!
//
//******************************************************************
var h=0;
function doSelect(id){
if(h%2==0)
list.style.display='';
else
list.style.display='none';
h++;
eval('title.innerHTML=title_'+id+'.value');
}
function selectList(imgSrc,i,i......
用JavaScript实现HTML的无缝MARQUEE(2007-01-26 18:27:00)
摘要:
<h1>无缝MARQUEE</h1>
<h3>作者 neweroica 2002-12-1 16:58</h3>
<p>使用说明</p>
<p>在<marquee>标签中加入onstart=noSeamMarquee(this,max,peroid,0),其中max是innerHTML最大的复制数目,比如可以取100;
peroid略小于本marquee走一个循环的大约时间(单位:秒),可以事先估计。</p>
<scrīpt>
function noSeamMarquee(obj,max,t,h){
if(h==0)
cont=obj.innerHTML;
obj.innerHTML+=cont;
if(h>max)
eval('clearTimeout(timer_'+obj.id+')');
h++;
eval('timer_'+obj.id+'=setTimeout("noSeamMarquee('+obj.id+','+max+','+t+','+h+')",'+t*1000+');');
}
</scrīpt>
<marquee id=m1 ōnstart="noSeamMarquee(this,100,20,0);this.stop()" width=500 height=100 direction=left scrollamount=3 scrolldelay=1 ōnmouseover=this.stop() ōnmouseout=this.start() bgcolor=#888888>
<img src=http://202.112.86.128/studentspace/aqyw/js/marquee/bucky_480x360.jpg height=100 width=150>
<img src=http:......
使对话框应用程序具有系统托盘功能(2007-01-26 18:26:00)
摘要:
2005-2-27 12:23
1. 将SystemTray.h和SystemTray.cpp拷贝到项目工作目录,再添加到项目里。
在XXXDlg.h中加入
#include "SystemTray.h"
2. 为XXXDlg类添加protected变量:CSystemTray m_trayIcon
3. 建立托盘菜单
也就是当程序隐藏到任务栏上时,你用右键点击托盘图标时显示出的右键菜单。
新建一个Menu资源,命名为IDR_THETRAY。
为这个菜单添加你想要的子菜单。例如:
IDC_ABOUT 关于
IDC_SHOW 显示/隐藏
ID_APP_EXIT 退出
用ClassWizard为IDC_ABOUT添加响应函数OnAbout():
CAboutDlg aboutdlg;
aboutdlg.DoModal();
用ClassWizard为IDC_SHOW添加响应函数OnShow():
if (!IsWindowVisible()) {
ShowWindow(SW_SHOW);
}
else{
ShowWindow(SW_HIDE);
}
4. 在XXDlg头文件中加入:
#define WM_USER_TRAY_NOTIFICATION (WM_USER+0x101)
在cpp文件的OnInitDialog......