博文
好网站(2007-01-16 17:58:00)
摘要:关于怎么学习APIhttp://www.itzhe.cn/Programme/HTML/81712.html初学者学习C++的50条忠告http://www.itzhe.cn/Programme/HTML/81721.htmlC++程序设计之四书五经http://www.itzhe.cn/Programme/HTML/81720.html闲谈C++算法封装:穷举法http://www.itzhe.cn/Programme/HTML/81719.html用C++访问SQL Server 2000http://www.itzhe.cn/Programme/HTML/81718.htmlC++基础:常量成员函数特殊说明http://www.itzhe.cn/Programme/HTML/81717.html水滴石穿C语言之可变参数问题http://www.itzhe.cn/Programme/HTML/81716.html写好C程序的10条秘籍 http://www.itzhe.cn/Programme/HTML/81713.html......
scanf函数解释(2007-01-09 12:37:00)
摘要:
因为我写的程序经常有BUG,而问题来于对SCANF的理解不透.看到这篇就转战过来的,觉得非常不错.!!值得一看!!
引用地址:http://bbs.bc-cn.net/dispbbs.asp?boardid=5&id=111342
scanf()函数释疑(上/下)
scanf()函数释疑(上)
一、 序言
scanf()函数是所有C语言学习者在学习C语言过程中所遇到的第二个函数(第一个函数是printf(),Brian W.Kerninghan & Dennis M.Ritchie的“hello,world”程序基本上是所有的C语言学习者第一个范例),所以scanf()函数应当是C学习者能熟练运......
C程序十大建议(2006-12-30 15:09:00)
摘要:
神乎其技,惟C程序,功到自成,十大建议!
1、汝应频繁催动lint工具,据其语法声明修习内力,此事皆因lint之思虑决断实远在君上。
2、不可依随NULL指针,如若不然,混沌痴颠必俟君于彼岸。
3、纵有天赋大智慧,知晓其事无碍,汝亦当尽数强制挪移函数参数为原型所期之数据类型,以免一时疏忽,致使数据类型向汝讨还血债。
4、若头文件未于函数原型之中声明返回值类型,汝当亲为此事,更须谨慎再三,以防不测降临汝身。
5、汝须亲核字符串、数组操作之越界与否。古之圣人有言: 尝祈门人对答“然也”,不意门人答曰“吾了然于胸无须多虑尽请宽心他日趋庭必当重谢”——所期者短,所获者长,此于数组,实最险要处也。
6、若函数声明内提及,于异常时将返回错误代码云云,汝当谨慎校核该返回值。或有校核语句使汝之代码增大数倍,令汝之手指因敲键而痛楚莫名之事,汝亦当如此。不然,汝固以为此异常之事难得一见,上苍亦必借此惩戒汝之傲慢。
7、汝应研习库函数,不当亲笔重写之。如是,汝之代码必短小易读,汝之心境必清爽恬淡。
8、纵汝不愿,汝亦应借括号、缩进之属,使汝之代码间架清晰,可为后者借鉴。汝之大智慧施于决疑解难则可,施于敷设谜团、淆乱文体则万万不可。
9、外部标识符之前六字符当与众不同。此律法看似粗陋,和者寥寥,然其效用自能延续永远。汝若不从此言,他日,汝欲连接程序于旧作之上时,必抓耳挠腮、蓬头垢面,狼狈之相尽现矣。
10、或有族类,大言炎炎,云“普天之下,莫非VAX”。于此等异端,汝当摒弃之、断绝之、远避之。更有异人,笃信魔道,以为纵汝所用电脑频繁换代,汝之程序亦能长久适用。汝亦不可与此类恶人来往,谨记谨记。
如何编写最烂的C 语言程序
1、重写标准库函数,把函数名改成你自己才懂得的晦涩的名字。
2、使用晦涩的,个性化的,无法移植的函数库,这样你就永远也不会离开你喜欢的平台了。
3、在所有函数调用前,使用最能精确描述函数功能的注释,比如 printf("Hello world\n");&n......
[转载]C语言写系统软件举例(2006-12-30 15:07:00)
摘要:
---- 我们知道C语言的功能非常强大, 很适合编写系统软件。利用它我们可以很容易地解决经常遇到的一些棘手的问题,如拷贝隐含或系统属性的文件(特别是光盘中的隐含文件)、在任意DOS版本或在windows中更改子目录的名称、在任意DOS 版本中使用带空格的目录名等等。这些问题仅靠操作系统或常用的工具软件往往很难凑效。我们可以利用C语言的强大功能来编写一些小程序,能够很顺利地解决这些问题。
---- 一、拷贝隐含或系统属性的文件
---- 使用操作系统提供的拷贝命令不能拷贝隐含或系统属性的文件,因为在拷贝过程中系统会提示“File not found”。下面的小程序可以解决这个问题。
// copyfile.c# include < stdio.h ># include < stdlib.h >main(int argc,char *argv[]){ if(argc< 3) { printf("\n用法: COPYFILE< 源文件名 > < 目标文件名 >\n"); exit(1); } copy(argv[1],argv[2]);}
copy(char * file1,char * file2){ char ch; FILE * fp1,* fp2;
if((fp1=fopen(file1,"rb"))==NULL) {......
C语言OPEN函数详解(2006-12-30 15:04:00)
摘要:
不是。open是一个非标准的低级文件I/O函数,返回的是文件的低级句柄,原型:int open(char* path, int access, ...);open是一个可变参数的函数实现,后面的可变参数通常表示unsigned mode,mode参数是否存在要看access的值,path是文件的路径。access和mode的可取值通常在FCNTL.h里面定义,access的可取值如下:#define O_RDONLY 1#define O_WRONLY 2#define O_RDWR 4access还可以是以下flag及它们之间的组合而得到的性质:#define O_CREAT 0x0100 /* create and open file */#define O_TRUNC 0x0200 /* open with truncation */#define O_EXCL 0x0400 /* exclusive open */#define O_APPEND  ......
[转载]开始编写病毒(2006-12-30 13:35:00)
摘要:一、什么是病毒 我们要对付病毒,就要了解病毒. 写一些病毒是一个很好的办法. 如果要写一个病毒,先要知道它是什么.可以给病毒一个定义,这一定义是被广泛认可的。Frederic Cohen博士在《计算机病毒简短讲座》中提到的:“……一种能够通过修改自身来包括或释放自我拷贝而传染给其他程序的程序。“ 其实病毒和普通程序并无太大不同,而且通常比较简单,不像很多程序那样复杂。只不过病毒里面用到一些正常程序一般不会用到的技术。 要编制一个病毒,首先要知道病毒的运行机理。 不论是何种病毒,它一般在结构上分为三个功能模块:感染机制,触发机制和有效载荷。 在病毒结构中,首要的而且唯一必需的部分是感染机制。病毒首先必须是能够繁殖自身的代码,这是病毒之所以成为病毒的根本原因。我们可以用一段类C伪码来表示这个过程。InfectSection() { if (infectable_object_found &&object_not_already_infect) infect_object; } ......
反汇编(2006-12-30 13:27:00)
摘要:73903AA9 cdq 73903AAA idiv eax,edi 73903AAC mov al,byte ptr [ecx+1AC8h] 73903AB2 lea edi,[ebp-1] 73903AB5 mov byte ptr [edx+ecx+1A81h],al 73903ABC mov eax,dword ptr ds:[73915DA8h] 73903AC1 add dword ptr [eax+1AC8h],esi 73903AC7 mov eax,dword ptr ds:[73915DA8h] 73903ACC mov ecx,dword ptr [eax+1AC8h] 73903AD2 mov word ptr [eax+ecx*2+104h],20h 73903ADC mov eax,dword ptr ds:[73915DA8......
按照指定精度计算#(2006-12-27 21:01:00)
摘要:#include"stdio.h"#include"math.h"double pi(float eps);void main(){ printf("pi=%.2f\n",pi(0.01)); printf("pi=%.3f\n",pi(0.001)); printf("pi=%.4f\n",pi(0.0001));}double pi(float eps){ double s,t,n,f; s=0.0; n=1.0; f=1.0; t=1.0; while(fabs(t)>eps) { s=s+t; n+=2; f=-f; t=f/n; } return (4*s); }......
另一种使用指针变量处理二维数组的方法(2006-12-27 20:49:00)
摘要:#include"stdio.h"#define M 3#define N 2void main(){ int a[M][N]; int (*p)[N];/*定义一个指向包含N个元素的整形一维数组的指针变量*/ int i; for(p=a;p<a[M];p++) for(i=0;i<N;i++) scanf("%d",*p+i); for(p=a;p<a[M];p++) { for(i=0;i<N;i++) printf("%d",*(*p+i)); printf("\n"); }}
/*注意不要将int (*p)[N];写成int *p[N];后者表示一个包含N个元素的一维数组,每个元素为基类型为整形的指针变量,前者定义的指针变量P的基类型为包含N个元素的整形一维数组.
每执行一次P++;指针将移动2*N个字节,即指向二维数组的下一行,*P+I指向当前第I 个元素,*(*P+I)为当前第I个元素的值.*/
......
删除某指定字符的C函数(2006-12-27 20:28:00)
摘要:
#include"stdio.h"void del_char(char *s,char ch);main(){ char *buffer1=NULL; gets(buffer1); del_char(buffer1,'a'); puts(buffer1); }void del_char(char *s,char ch){ char *p; while(*s!='\0') { if(ch==*s) { for(p=s;*p!='\0';p++) *p=*(p+1); } else s++; }}......
