C语言编程技巧汇萃

合集下载

C语言高级编程技巧与方法

C语言高级编程技巧与方法

C语言高级编程技巧与方法第一章:优化代码结构与功能模块化C语言作为一种高效的编程语言,其高级编程技巧与方法对于提高代码的可读性和维护性非常重要。

优化代码结构与实现功能模块化是实现这一目标的重要方式之一。

1.1 函数的使用与定义合理使用函数可以提高代码的可读性和重用性。

函数的定义应该尽量简单明了,只关注核心功能,代码应尽量避免重复操作。

合理选择函数的返回值类型和参数个数,使得函数调用方便快捷。

1.2 使用预处理指令预处理指令可以在编译之前对代码进行预处理,比如宏定义和条件编译。

合理使用宏定义可以减少代码的冗余和重复,提高代码的可维护性。

条件编译可以根据不同的编译选项选择不同的代码路径,提供更高的灵活性。

1.3 模块化编程将代码按照功能模块化划分,模块之间通过接口进行通信。

这样一方面可以提高代码的可读性和可维护性,另一方面也方便代码的重用。

每个模块应该有清晰的责任和功能,模块之间的接口应该设计合理和规范。

第二章:内存管理与指针技巧在C语言中,内存管理和指针技巧是非常重要的方面。

合理有效地使用内存,以及灵活掌握指针的使用都是高级编程技巧与方法的关键。

2.1 动态内存管理在某些情况下,需要动态申请和释放内存。

使用malloc和free 函数可以实现动态内存管理。

但是在申请内存之后,要及时进行释放,以防止内存泄漏问题的出现。

2.2 指针的使用与优化指针是C语言中的重要概念,熟练掌握指针的使用可大大提高代码的效率。

但是指针也容易引发一些问题,比如空指针和野指针。

因此,在使用指针时要格外小心,确保指针的合法性和安全性。

2.3 内存对齐与缓存优化合理使用内存对齐和进行缓存优化,可以提高代码的性能。

内存对齐可以减少内存访问的时间,缓存优化可以减少缓存的命中次数,从而提高代码的运行速度。

第三章:并发与多线程编程并发与多线程编程是C语言中的高级编程技巧,特别适用于处理具有并发需求的任务。

3.1 并发编程原理与模型理解并发编程的原理和模型,比如同步与互斥、消息传递与共享内存、生产者与消费者模型等。

C语言学习秘籍让你成为编程高手

C语言学习秘籍让你成为编程高手

C语言学习秘籍让你成为编程高手C语言是计算机科学领域中最常用和重要的编程语言之一。

掌握好C语言不仅可以让你在编程领域有很大的竞争优势,还能够更好地理解计算机底层运行原理。

本文将分享一些学习C语言的秘籍,帮助你成为一名编程高手。

1. 了解基本语法C语言的基本语法是编程学习的基础。

你需要掌握C语言的数据类型、变量、运算符、控制流等基本概念。

了解这些基础知识可以帮助你理解和编写简单的程序。

2. 深入学习指针指针是C语言中引人注目的特性之一。

熟练掌握指针的使用可以加强你对内存管理和数据结构的理解。

通过灵活运用指针,你可以实现更高效的算法和数据结构,提升程序的性能。

3. 掌握常用库函数C语言提供了许多常用的库函数,这些函数可以简化编程过程并提高代码的可读性。

例如,你可以使用<math.h>库中的数学函数来进行数值计算,使用<string.h>库中的字符串函数进行字符串操作。

熟悉这些常用库函数可以提高编程效率。

4. 大量练习编程编程是一门实践性很强的学科,光靠理论是远远不够的。

通过大量练习编写C语言程序,你可以提升自己的编程能力和解决问题的能力。

尽量选择多样化的练习题目,包括基础的算法题、数据结构实现以及项目实践等。

5. 阅读源代码阅读优秀的C语言源代码可以帮助你学习和理解编程技巧和设计模式。

选择一些开源的C语言项目,仔细阅读其源代码,并试着分析代码的结构和思路。

这样做可以培养你的代码质量意识和编程思维。

6. 调试和优化调试和优化是一个编程高手必备的技能。

学会使用调试工具和技巧,可以帮助你快速定位和解决代码中的问题。

此外,学会优化程序的性能也是非常重要的,可以通过选择合适的算法、数据结构优化和减少代码中的冗余,提高程序的运行效率。

7. 加入社区和团队加入C语言开发者的社区和团队,与其他编程高手互相交流和学习。

在这个过程中,你会遇到各种各样的问题和挑战,不断提升你的编程能力和解决问题的能力。

C编程实用技巧大全

C编程实用技巧大全

C编程实用技巧大全在C编程中,有许多实用技巧可以帮助程序员提高代码的效率和可读性。

本文将介绍一些常用的C编程实用技巧,供读者参考和学习。

一、注释的重要性在编程中,注释是非常重要的。

合理的注释可以使代码更易于理解和维护。

在C语言中,可以使用单行注释(//)或多行注释(/* */)来添加注释。

建议在代码的关键部分和复杂的算法实现处添加注释,以提高代码的可读性。

二、变量和常量的命名为了使代码更易读和理解,变量和常量的命名应该具有一定的描述性。

应该避免使用过于简短或晦涩的变量名,而应该选择能够清晰表达变量用途的命名方式。

例如,可以使用"count"代替"c"来表示计数变量,使用"MAX_SIZE"代替"MS"来表示最大大小常量。

三、避免使用魔术数魔术数是指代码中直接出现的不具备明显含义的数字。

应该尽量避免在代码中使用魔术数,而是将其定义为有意义的常量。

这样可以提高代码的可读性和可维护性,并且在需要修改数字时,只需修改一处定义即可。

四、合理使用条件语句在编写条件语句时,应该尽量将简单的条件放在前面,复杂的条件放在后面。

这样可以提高代码的效率,因为在第一个满足条件的语句后,后续的条件判断将不会执行。

五、适当利用循环语句循环语句是C编程中常用的语句之一,在循环中可以实现重复操作的代码块。

在使用循环语句时,应该注意避免死循环的情况发生,确保循环条件能够正确地终止循环。

六、避免使用全局变量全局变量在程序中的作用域较大,容易引起命名冲突和代码的不可预测性。

为了提高代码的可维护性,应该尽量避免使用全局变量,而是使用局部变量或函数参数来传递数据。

七、合理利用函数和模块在编写C代码时,应该将重复使用的代码块封装成函数或模块。

这样可以提高代码的复用性和可读性,并且可以方便代码的维护和修改。

八、及时释放资源在使用动态分配的内存或其他资源时,应该及时释放这些资源,避免造成内存泄漏或资源浪费。

C编程技巧提高代码效率的七大秘诀

C编程技巧提高代码效率的七大秘诀

C编程技巧提高代码效率的七大秘诀在C语言编程中,提高代码效率是程序员们一直探索的目标。

通过运用一些技巧和策略,我们可以使代码更具效率和可读性。

本文将介绍C编程中七个重要的技巧,可帮助提高代码效率。

一、使用合适的数据类型正确选择合适的数据类型可以有效降低内存占用和提高运行速度。

在C中,int类型通常用于整数,而float和double类型适用于浮点数。

避免使用过大或过小的数据类型,以免造成内存浪费或精度丢失。

二、避免使用全局变量全局变量会在程序整个生命周期中存在,容易引发命名冲突和内存泄漏的问题。

尽量使用局部变量,将变量的作用范围限制在需要的地方,可以提高代码的可维护性和可读性。

三、避免重复计算在编写代码时,避免重复计算是提高效率的重要策略。

可以通过将计算结果保存在变量中,以便后续使用,而不是在每次需要时重新计算。

这样可以减少不必要的计算步骤,节省时间和资源。

四、使用位运算加速位运算是C语言中的一项重要技术,可以实现快速的计算和操作。

通过位运算,可以有效地对数字进行各种操作,如与、或、异或等。

这些运算通常比传统的算术运算更高效。

五、优化循环结构循环是C语言中常用的结构之一,也是代码效率的关键。

在编写循环时,要尽量避免在循环内部进行复杂的计算或操作。

可以将这些计算或操作移出循环,减少不必要的重复工作,从而提高代码的效率。

六、有效使用函数函数是C语言中的一种重要的代码组织方式。

通过将重复的代码抽象为函数,可以提高代码的可读性和可维护性。

同时,函数的调用比代码的重复复制更加高效。

因此,合理使用函数可以提高代码的效率。

七、减少内存分配和释放内存的分配和释放是C语言中常涉及的操作。

频繁的内存分配和释放会影响代码的效率。

对于需要重复分配和释放内存的情况,可以使用内存池或缓存技术来优化。

这样可以减少操作系统的开销,提高代码的效率。

总结通过运用以上七个C编程技巧,可以有效地提高代码的效率。

选择合适的数据类型、避免使用全局变量、避免重复计算、使用位运算加速、优化循环结构、有效使用函数以及减少内存分配和释放等策略都是提高代码效率的有效方法。

C语言编程技巧范文

C语言编程技巧范文

C语言编程技巧范文C语言是一种广泛应用于系统编程、嵌入式开发和科学计算领域的编程语言。

下面是一些C语言编程技巧,帮助你更好地编写高效、可维护的代码。

1.使用有意义的变量名:变量名应具有描述性,能够清晰地表达其用途。

避免使用过于简短或无意义的变量名,这样在阅读代码时可以更容易理解变量的作用。

2.注释:对于复杂的逻辑或算法,使用适当的注释来解释代码的功能和目的。

注释应该清楚、简洁,并且属于代码本身。

然而,过多或不必要的注释可能会使代码更加混乱和困惑,因此适度使用注释。

3.代码缩进:使用适当的缩进来使代码结构更清晰。

缩进可以帮助理解代码层次结构,但要保持一致性。

可以选择使用制表符或空格进行缩进,但重要的是在整个代码库中保持统一4.函数的单一职责原则:每个函数应该有一个明确的目标和任务。

将函数的功能限制在一个很小的范围内可以使代码更易于理解、维护和测试。

5.避免使用全局变量:全局变量具有全局作用域,可以在任何地方进行访问和更改。

然而,过度使用全局变量会导致代码的耦合性增加,使代码更难以理解和调试。

建议尽可能使用局部变量和参数传递来限制变量的作用域。

6.错误处理:对于可能导致错误的操作(例如文件I/O、内存分配等),要适当地处理可能发生的错误情况。

可以使用条件语句或错误代码来判断操作是否成功,并采取相应的处理措施,例如返回错误码或抛出异常。

7. 内存管理:C语言需要手动管理内存,包括内存分配和释放。

确保在分配内存后及时释放它,以避免内存泄漏。

使用动态内存分配函数(如malloc、calloc、realloc)时,要检查内存分配是否成功,并在使用完内存后调用free函数进行释放。

8.函数参数检查:在函数内部对传入的参数进行合法性检查,避免传入非法或无效的参数。

可以使用条件语句、断言或错误代码来检查参数,并在出现错误情况时采取适当的处理措施。

9.减少内存拷贝:C语言中进行频繁的内存拷贝操作会导致性能下降。

可以使用指针或引用类型来传递数据,避免不必要的内存拷贝。

C语言编程技巧:高效解决问题的秘籍

C语言编程技巧:高效解决问题的秘籍

C语言编程技巧:高效解决问题的秘籍C语言作为一种广泛应用的编程语言,其编程技巧对于程序员来说至关重要。

高效解决问题的秘籍是程序员们一直追求的目标。

本文将从几个方面来探讨C语言编程技巧,希望能够帮助读者更好地掌握C 语言编程。

一、理解问题要高效解决问题,首先要深入理解问题。

在进行C语言编程时,需要对问题有一个清晰的理解,明确问题的要求和目标。

只有充分理解了问题,才能采取有效的解决方案。

在理解问题的过程中,可以通过分析问题的结构和逻辑关系来帮助理解。

此外,还可以通过画图、列表等方式,将问题整理清楚,以加深对问题的理解。

二、掌握基本语法掌握基本语法是编程的基础,对于C语言编程也是如此。

熟练掌握基本语法可以帮助程序员更快地理解和编写代码,提高编程效率。

基本语法包括变量的定义、赋值语句、条件语句、循环语句等。

这些语法的掌握对于解决问题非常重要,因为很多问题的解决都离不开这些基本语法的运用。

三、灵活运用数据结构在C语言编程中,数据结构是一个非常重要的概念。

程序员们需要灵活运用各种数据结构来解决问题。

常见的数据结构包括数组、链表、栈、队列等,通过合理选择和组合这些数据结构,可以更好地解决问题。

在使用数据结构时,需要考虑数据的组织方式、存储方式以及访问方式等,以充分发挥数据结构的作用。

四、模块化设计模块化设计是提高程序可维护性和可扩展性的有效手段。

在解决问题时,可以将问题划分成若干个模块,然后针对每个模块进行设计和编码。

这样可以使得问题的解决更加清晰和简单。

在C语言编程中,可以通过函数、类等方式来实现模块化设计。

五、注重代码风格良好的代码风格对于编程来说是非常重要的。

通过良好的代码风格,可以使得代码更易读、易懂,从而更容易解决问题。

良好的代码风格通常包括良好的命名规范、合理的缩进、简洁的注释等。

程序员们在编写代码时,不仅要关注代码的功能实现,还要注意代码的可读性和可维护性。

六、合理使用调试工具调试是编程过程中一个非常重要的环节,也是解决问题的重要手段。

C语言技术的高级使用技巧

C语言技术的高级使用技巧

C语言技术的高级使用技巧在C语言编程领域中,掌握高级使用技巧是提高代码质量和效率的重要一环。

本文将介绍一些C语言技术的高级使用技巧,帮助读者更好地理解和运用这些技巧。

一、内存管理技巧在C语言中,合理地管理内存是确保程序稳定性和效率的关键。

以下是一些高级的内存管理技巧:1. 动态内存分配使用malloc()函数可以在运行时动态分配内存空间,而不是在编译时指定固定的内存大小。

这样可以根据实际需要分配所需的内存,提高程序的灵活性。

2. 内存释放动态分配的内存需要手动释放以避免内存泄漏。

通过调用free()函数可以释放先前使用malloc()分配的内存空间,并返回该内存供系统重新利用。

3. 内存拷贝使用memcpy()函数可以将源内存块的内容拷贝到目标内存块,提高内存操作效率。

二、指针技巧指针是C语言中非常强大且灵活的工具,以下是一些高级的指针技巧:1. 函数指针函数指针可以存储和调用函数的地址,通过函数指针可以实现回调函数、动态函数调用等高级功能。

2. 指针数组指针数组是一种数组,其中每个元素都是一个指针。

它可以用于存储多个字符串或其他数据类型的指针,并且可以通过遍历数组访问这些指针指向的数据。

3. 指向指针的指针指向指针的指针是C语言的高级特性,它可以用于多级指针、链表等数据结构的处理,提高数据操作的效率。

三、字符串处理技巧字符串处理是C语言编程中常见的任务,以下是一些高级的字符串处理技巧:1. 字符串拼接使用strcat()函数可以将两个字符串拼接在一起,提高字符串拼接效率。

2. 字符串比较使用strcmp()函数可以比较两个字符串的大小关系,可用于排序、查找等操作。

3. 字符串分割使用strtok()函数可以将一个字符串按照指定的分隔符进行分割,实现字符串的分隔和解析。

四、性能优化技巧C语言是一种高效的编程语言,以下是一些高级的性能优化技巧:1. 循环优化避免在循环内部执行耗时的计算或函数调用,可以提高程序的运行效率。

c语言使用技巧

c语言使用技巧

c语言使用技巧C语言是一种广泛使用的编程语言,掌握一些使用技巧可以提高编写代码的效率和质量。

下面是一些常用的C语言使用技巧。

1. 了解标准库函数:C语言的标准库函数有很多,熟悉这些函数可以节省大量的重复工作,比如字符串处理函数、内存操作函数等。

2. 使用预处理器宏:预处理器宏可以将一些常见的代码片段封装起来,方便重复使用。

比如定义一个计算平方的宏,可以简化代码的书写。

3. 模块化编程:将代码分割成多个模块,每个模块负责一个功能的实现,代码结构清晰,易于维护和修改。

4. 使用注释:适当添加注释可以增加代码的可读性,方便他人理解你的代码,并且在以后的维护中也有帮助。

5. 避免使用全局变量:全局变量在复杂的程序中容易引起错误,尽量避免使用全局变量,使用局部变量和函数参数来传递数据。

6. 定义常量:将一些常用的数值或字符串定义成常量,可以提高代码的可读性,方便修改。

7. 善用循环:使用循环可以减少冗余代码的书写,但要注意循环的合理性和效率。

8. 错误处理:对于可能出错的地方,使用合适的方式进行错误处理,比如返回错误码或者抛出异常,避免出现未处理的错误。

9. 使用合适的数据结构:根据不同的问题,选择合适的数据结构可以提高程序的效率。

比如链表适合插入和删除操作频繁的场景,而数组适合随机访问和遍历操作多的场景。

10. 进行代码优化:在程序完成后,可以进行代码优化,提高程序的执行效率。

比如避免重复计算、减少内存使用等。

以上是一些常用的C语言使用技巧,掌握这些技巧可以帮助我们更好地编写高效、健壮和易于维护的代码。

但需要注意的是,技巧只是手段,合适的技巧在合适的场景下使用才能发挥最大的作用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C语言编程技巧汇萃(包含大量实用函数) 编程函数集,详细内容如下:读键盘扫描码获取机器日期将浮点数转化为字符串清除屏幕显示时间打印一个矩形砍掉字符串中所有空格取子字符串从文件中读取字符字符串左靠齐取左字符串向文件写数据取右字符串打开或关闭光标喇叭发声时间延迟正点报时写整数于文件中从文件中读取整数报警字符串右靠齐字符串居中删除子字符串查找指定字符串产生空格产生字符串砍掉字符串左边空格砍掉字符串右边空格显示一个字符串定义屏幕颜色显示提示窗口显示警告窗口得到文件长度窗口滚屏扫描键盘插入字符串检测磁盘是否准备就绪检测磁盘是否写保护修改文件的某一行成批拷贝文件拷贝一个文件建立目录得到目录得到文件名任意两个正整数相加(<80位)任意两个正整数相乘注意:该函数集省略了不少TC标准头文件,读者使用时要自行添加。

而且由于该函数集内部函数间有的有调用关系,读者拆卸时要谨慎。

/*编程技巧荟萃*//*从键盘中读取字符功能:按下普通键时,返回其ASCII码扫描码CODE=0*/int INKEY(int *code){int m;while(!bioskey(1))/*可加入无按键时代码*/;*code=bioskey(0);m=*code*255;if(!m) m=*code>>8;*code=*code&255;return m;}/*获取机器日期*/int DATE(char *s,char type){char dat[30];int num;struct tm *tblock;time_t t;t=time(NULL);tblock=localtime(&t);strcpy(dt,asctime(tblock));strcpy(s,"");switch(type){case 'N':num=(*tblock).tm_year+1900;itoa(num,s,10);break;case 'Y':num=(*tblock).tm_mon+1;itoa(num,s,10);break;case 'R':num=(*tblock).tm_mday;itoa(num,s,10);break;case 'S':strcpy(dt,asctime(tblock));MID(s,dt,12,8);break;}}return num;}/*将浮点数转化为字符串*//* 参数说明data:需转换的浮点数;s:输出字符串;len:转换后的长度*/ void f_to_s(double data,char *s,int len){int dec,sign,i;char *s1,s2[100],s3[100];s1=0;s2[0]=0;s3[0]=0;s1=fcvt(data,len,&dec,&sign);if (!sign&&data>=1){MID(s2,s1,dec+1,-1);MID(s3,s1,1,dec);strcpy(s,"+");strcat(s,s3);strcat(s,".");strcat(s,s2);}if (sign&&fabs(data)>=1){MID(s2,s1,dec+1,-1);strcpy(s,"-");MID(s3,s1,1,dec);strcat(s,s3);strcat(s,".");strcat(s,s2);}if (!sign&&dec==0){strcpy(s,"+0.");strcat(s,s1);}if (sign&&dec==0){strcpy(s,"-0.");strcat(s,s1);}if (!sign&&dec<0){strcpy(s,"+0.");for(i=1;i<=fabs(dec);i++)strcat(s,"0");strcat(s,s1);}if (sign&&dec<0){strcpy(s,"-0.");for(i=1;i<=fabs(dec);i++)strcat(s,"0");strcat(s,s1);}if (strlen(s)>len) s[len]=0;}/*清除屏幕*/void CLSXY(int color,int x,int y,int xl,int yl) {int x1,y1;union REGS r;if(x<1||y<1) return;y--;x--;y1=y+yl-1;x1=x+xl-1;if (y1>25||x1>80)return;r.h.ah=6; /*子功能号*/r.h.al=0; /*滚动行数*/r.h.ch=y;r.h.cl=x;r.h.dh=y1;r.h.dl=x1;r.h.bh=color*16;int86(16,&r,&r);}/*显示时间*/void display_time(int color,int back_color,int y,int x) {static char oldtime[9]="";char newtime[9];if(y<1||x<1) return;settextstyle(1,0,1);DATA(newtime,'S');back_color=7;if(strcmp(newtime,oldtime)){setfillstyle(1,back_color);setcolor(color);bar(535,458,635,475);outtextxy(x,y,newtime);strcpy(oldtime,newtime);}}/*打印一个矩形*/void PRINT_KJ(int x,int y,int wide,int high){int i;for(i=x;i<x+wide;i+=2){gotoxy(i,y);cprintf("");}gotoxy(x,y+high);cprintf("");gotoxy(x+wide,y+high);cprintf("");gotoxy(x,y);cprintf("");gotoxy(x+wide,y);cprintf("");for(i=x+2;i<x+wide;i+=2){gotoxy(i,y+high);cprintf("");}for(i=y+1;i<y+high;i++){gotoxy(x,i);cprintf("");}for(i=y+1;i<y+high;i++){gotoxy(x+wide,i);cprintf("");}}/*砍掉字符串中所有空格*/void CUT_ALL_SPC(char *s){int i,n;char d[10000];n=0;for(i=0;i<strlen(s);i++)if(s[i]!=32){d[n]=s[i];n++;}d[n]=0;strcpy(s,d);}/*取子字符串*/void MID(char *s,char *t,int n,int m) {int i,j,p;if(n<1) n=1;i=strlen(s);if(i<n) m=0;if(m<0) m=i;else m=n+m-1;if(m>i) m=i;p=m-n+1;if(p<0) p=0;for(i=n-1,j=0;i<m;i++,j++)t[j]=s[i];t[p]=0;}/*从文件中读取字符*/int READ_STR(char *s,FILE *fp){int i=0;if(!fp) return 0;if(fgets(s,10000,fp)) i=1;s[strlen(s)-1]=0;return i;}/*字符串左靠齐*/void MOVE_LEFT(char *d,char *s,int n) {int i,l;l=strlen(s);if(n>l) n=l;for(i=0;i<l;i++)*d++=*s++;*d=0;}/*取左字符串*/void LEFT(char *d,char *s,int n){int i,l;i=0;l=strlen(s);if(n>l) n=l;for(i=0;i<n;i++)d[i]=s[i];d[n]=0;}/*向文件写数据*/void WRITE_STR(char *s,FILE *fp){char c=10;if(!fp) return;fputs(s,fp);fputc(c,fp);}/*取右字符串*/void RIGHT(char *dest,char *source,int num){int i,j;if (num<1) num=0;num=strlen(source)-num;if (num<0) num=0;for(i=0,j=num;j<=strlen(source);i++,j++) dest[i]=source[j]; }/*打开或关闭光标*/void CURSOR(int on2off){union REGS r;if (on2off!=OFF) on2off=10;r.h.ah=1;r.h.ch=3;r.h.cl=on2off;int86(16,&r,&r);}/*喇叭发声*/void SOUND(int frequency,int time){int i;i=time*50;if (i>30000) i=30000;if (i<50) i=50;sound(frequency);MYDELAY(i);nosound();}/*时间延迟*/void MYDELAY(long t){time_t OldTime;long t0;if (t0<1) t0=1;OldTime=clock();while(clock()-OldTime<t0);}/*正点报时*/void REPORT_CLOCK(void){int i;for(i=0;i<5;i++);{SOUND(500,10);MYDELAY(1000);}SOUND(800,10);}/*写整数于文件中*/void WRITE_INT(int num,FILE *p) {char s[20],a=10;if (!p) return;itoa(num,s,10);fputs(s,p);fputc(a,p);}/*从文件中读取整数*/int READ_INT(int *num,FILE *p) {int i;char s[30]="";if (!p) return 0;if (fgets(s,10000,p)){i=-1;s[strlen(s)-1]=0;*num=atoi(s);}else i=0;}/*报警*/void WARN(void){SOUND(300,1);SOUND(100,1);}/*字符串右靠齐*/void MOVE_RIGHT(char *s,int wide) {int i,l,n;l=strlen(s);n=wide-l;if (n>0){for(i=l;i>-1;i--) s[i+n]=s[i];for(i=0;i<n;i++) s[i]=32;}}/*字符串居中*/void MOVE_MIDDLE(char *s,int wide) {int i,l,n;l=strlen(s);if (wide>l){wide=wide-1;n=wide/2;wide=wide-n;for(i=l;i>-1;i--) s[i+n]=s[i];for(i=0;i<n;i++) s[i]=32;for(i=0;i<wide;i++) s[l+n+i]=32;s[l+n+i]=0;}}/*删除子字符串*/void Delete_SubString(char *source,int start,int num) {int i,l;l=strlen(source);if (num>l-start+1||num==-1) num=l-start+1;if (start<1||start>1) return;for(i=start;i<l-num+2;i++)source[i-1]=source[i+num-1];}/*查找指定字符串*/int INSTR(int n,char *source,char *dest){int i,j,k1,k2,p;int start=0;if (n==0) n=1;k1=strlen(source);k2=strlen(dest);if (n<0){char s[100];n=-n;MID(s,source,n,k2);if (strcmp(s,dest)) return 0;return n;}if (k1-n+1<k2) return start;for(i=n-1;i<k1;i++){p=0;for(j=0;j<k2;j++)if (source[i+j]!=dest[j]) break;else p++;if (p==k2){start=i+1;break;}}return start;}/*产生空格*/void SPACE(char *s,int n){int i;if (n<0) n=0;for(i=0;i<n;i++) *s++=32;*s=0;}/*产生字符串*/void STRING(int n,char *s1,char *s2) {int i;if (n<0) n=0;s1[0]=0;for(i=1;i<=n;i++) strcat(s1,s2);}/*砍掉字符串左边空格*/void CUT_LEFT_SPACE(char *s){int i,j,k=0;i=strlen(s)+1;for(j=0;j<i;j++) if (s[j]!='') break; for(k=0;j<i;k++,j++) s[k]=s[j];}/*砍掉字符串右边空格*/void CUT_RIGHT_SPACE(char *s){int i,j;i=strlen(s)-1;for(j=i;j>-1;j--) if (s[j]!='') break; s[j+1]=0;}/*显示一个字符串*/void DISPLAY(char *s){union REGS regs;int color,x,y;x=wherex();y=wherey();color=16*bjys+qjys;while(*s){if(x>80) break;regs.h.ah=9;regs.h.al=*s;regs.h.bh=0;regs.h.bl=color;regs.x.cx=1; /*显示的次数,不改变光标位置*/ int86(16,®s,®s);x++;if(x>80){x=1;y++;if(y>25) y=25;}gotoxy(x,y);s++;}}/*定义屏幕颜色*/void COLOR(int ForeColor,int BackColor) {if(ForeColor<0||ForeColor>15) return;if(BackColor<0||BackColor>15) return;qjys=ForeColor;bjys=BackColor;}/*显示提示窗口*/void quit_YesNo(char *s1,char *s2){char buffer[2000],jx;gettext(30,8,76,16,buffer);textbackground(3);CLSXY(8,32,9,30,6);CLSXY(4,30,8,30,6);COLOR(15,4);gotoxy(35,10);DISPLAY(s1);gotoxy(35,12);DISPLAY(s2);gotoxy(35+strlen(s2)+1,12);jx=getch();puttext(30,8,76,16,buffer);if (jx=='n'||jx=='N') return; textbackground(0);textcolor(15);clrscr();CURSOR(ON);exit(0);}/*显示警告窗口*/void warn_message(char *s1,char *s2){char buffer[2000];gettext(30,8,76,16,buffer);CLSXY(8,32,9,30,6);CLSXY(4,30,8,30,6);COLOR(15,4);gotoxy(35,10);DISPLAY(s1);gotoxy(35,12);DISPLAY(s2);gotoxy(40,13);DISPLAY("按任意键继续...");getch();puttext(30,8,76,16,buffer);}/*得到文件长度*/long GetFileLength(char *file){FILE *fp;int i;if ((fp=fopen(file,"rb"))==NULL){clrscr();printf("Can't open the file %s .",file); return 0;}i=0;while(!feof(fp)){i++;fgetc(fp);}fclose(fp);return (i-1);}/*窗口滚屏*/void WINDOW_ROLL(int y1,int x1,int yl,int xl,int direct) {union REGS regs;int x2,y2;x1--;y1--;x2=x1+xl-1;y2=y1+yl-1;regs.h.ah=5+direct; /*ah=06h 向上滚动当前页*//*ah=07h 向下。

相关文档
最新文档