C
文章平均质量分 63
冷月醉雪
这个作者很懒,什么都没留下…
展开
-
编写可移植C/C++程序的要点
1.分层设计,隔离平台相关的代码。 就像可测试性一样,可移植性也要从设计抓起。一般来说,最上层和最下层都不具有良好的可移植性。最上层是GUI,大多数GUI都不是跨平台的,如Win32 SDK和MFC。最下层是操作系统API,大多部分操作系统API都是专用的。 如果这两层的代码散布在整个软件中,那么这个软件的可植性将非常的差,这是不言自明的。那么如何避免这种情况呢?当然是分层...原创 2018-06-06 19:43:43 · 511 阅读 · 0 评论 -
C 标准库 time.h
time.h头文件定义了四个变量类型、两个宏和各种操作日期和时间的函数。库变量tm结构的定义如下:struct tm { int tm_sec; /* 秒,范围从 0 到 59 */ int tm_min; /* 分,范围从 0 到 59 */ int tm_hour; /* 小时,...原创 2018-02-10 16:53:49 · 945 阅读 · 0 评论 -
C 标准库 string.h
string.h头文件的定义了一个变量类型,一个宏红各种操作字符数组的函数。库变量库宏库函数 序号 函数 & 描述 1 void *memchr(const void *str, int c, size_t n) 在参数 str 所指向的字符串的前 n 个字节中搜索第一次出现字符 c(一个无符号字符)的位置。 2 int m...原创 2018-02-10 16:45:04 · 272 阅读 · 0 评论 -
C 标准库 stdlib.h
stdlib.h头文件定义了四个变量类型,一些宏和各种通用工具函数。库变量库宏库函数 序号 函数 & 描述 1 double atof(const char *str) 把参数 str 所指向的字符串转换为一个浮点数(类型为 double 型)。 2 int atoi(const char *str) 把参数 str ...原创 2018-02-10 16:36:36 · 482 阅读 · 0 评论 -
C 标准库 stdio.h
stdio.h头文件定义了三个变量类型,一些宏和各种函数来执行输入和输出。库变量库宏库函数 序号 函数 & 描述 1 int fclose(FILE *stream) 关闭流 stream。刷新所有的缓冲区。 2 void clearerr(FILE *stream) 清除给定流 stream 的文件结束和错误标识符。...原创 2018-02-10 16:19:20 · 214 阅读 · 0 评论 -
C 标准库 stddef.h
stddef.h头文件定义了各种变量类型和宏。这些定义中的大部分也出现在其他头文件中。库变量库宏 C库宏NULL是一个空指针常量的值。它可以被定义为((void *)0), 0或0L,这取决与编辑器供应商。声明 下面是取决于编译器的NULL宏的声明:#define NULL ((char *)0)或#define NULL 0L或#defin...原创 2018-02-10 16:06:02 · 1477 阅读 · 0 评论 -
C 标准库 stdarg.h
stdarg.h头文件定义了一个变量类型va_list和三个宏,这三个宏可用于在参数个数未知(即参数个数可变)时获取函数中的参数。 可变参数的函数通常在参数列表的末尾使用省略号(,...)定义的。库变量 库宏 C库宏void a_start(va_list ap, list_arg)初始化ap变量,它与va_arg和va_end宏一起使用。last_arg是最...原创 2018-02-10 15:40:54 · 461 阅读 · 0 评论 -
C 标准库 signal.h
signal.h头文件定义了一个变量类型sig_atomic_t、两个函数调用和一些宏来处理程序执行期间报告的不同信号。库变量库宏 SIG宏用于表示以下各种条件的信号码:库函数 void (*signal(int sig, void (*func)(int)))(int):该函数设置一个函数来处理信号,即带有sig参数的信号处理程序。参数 ·...原创 2018-02-10 15:20:31 · 3835 阅读 · 1 评论 -
C 标准库 setjmp.h
setjmp.h头文件定义了宏setjmp()、函数longjmp()和变量类型jmp_buf,该变量类型会绕过正常的函数调用和返回规则。库变量库宏(int setjmp(jmp_bug environment))简介 C库宏int setjmp(jmp_buf environment):创建本地的jmp_buf缓冲区并且初始化,用于将来跳转回此处。这个子程序保存程序...原创 2018-02-10 14:56:37 · 676 阅读 · 0 评论 -
C 标准库 math
math.h头文件定义了各种数学函数和一个宏。在这个库中所有可用的都带有一个double类型的参数,且都返回double类型的结果。库宏库函数 序号 函数 & 描述 1 double acos(double x) 返回以弧度表示的 x 的反余弦。 2 double asin(double x) 返回以弧度表示的 x 的反正弦...原创 2018-02-10 14:51:50 · 566 阅读 · 0 评论 -
C 标准库 locale
locale.h头文件定义了特定地域的设置,比如日期格式和货币符号。接下来我们将介绍一些宏,以及一个重要的结构struct lconv和两个重要的函数。库宏库函数char *setlocale(int category, const char *locale) C库函数char *setlocale(int category, const char *locale)...原创 2018-02-10 14:29:35 · 460 阅读 · 0 评论 -
C 输入&输出
标准文件 getchar() 和putchar()函数 int getchar(void) 函数从屏幕读取下一个可用的字符,并把它返回为一个整数。这个函数在同一个时间内只会读取一个单一的字符。您可以在循环内使用这个方法,以便从屏幕上读取多个字符。 int putchar(int c) 函数把字符输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的...原创 2018-02-10 11:02:34 · 190 阅读 · 0 评论 -
C type
C语言提供了typedef关键字,你可以使用它来为类型取一个新的名字。typedef unsigned char BYTE; 按照惯例,定义时会大写字母,以便提醒用户类型名称是一个象征性的缩写。 您也可以使用 typedef 来为用户自定义的数据类型取一个新的名字。#include <stdio.h>#include <string.h>...原创 2018-02-10 10:55:06 · 298 阅读 · 0 评论 -
C 位域
有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有0个1两种状态,用1位二进位即可。为了节省存储空间,并使处理简单,C语言又提供了一种数据结构,称为"位域"或"位段"。 所谓"位域"是把一个字节的二进位划分为几个不同的区域,并说明每个区域的位数。每个域都有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二...原创 2018-02-09 20:04:11 · 180 阅读 · 0 评论 -
C 公用体
共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。 你可以根据需要在一个共用体内使用任何内置的或者用户自定义的数据类型。共用体占用的内存应足够存储共用体中最大的成员。 实例1#include <stdio.h>#incl...原创 2018-02-10 10:45:45 · 216 阅读 · 0 评论 -
C 标准库 errno.h
简介 C标准库的errno.h头文件定义了整数变量errno,它是通过系统调用设置的,在错误事件中的某些函数表明了什么发生了错误。该宏扩展为类型为int的可更改的左值,因此它可以被一个程序读取和修改。 在程序启动时,errno设置为零,C标准库中的特定函数修改它的值为一些非零值以表示某些类型的错误。你也可以在适当的时候修改它的值或重置为零。 errno.h头文件也定义了一系...原创 2018-02-09 20:23:13 · 223 阅读 · 0 评论 -
C 字符串处理函数
https://www.yuque.com/docs/share/46d914e9-f62a-432f-9991-2631e74780fe原创 2018-02-09 20:03:08 · 174 阅读 · 0 评论 -
C标准库 ctype
C标准库的ctype.h头文件提供了一些函数,可用于测试和映射字符。 这些函数接收int作为参数,它的值必须是EOF或表示一个无符号字符。 如果参数c满足描述的条件,则这些函数返回非零(true)。如果参数c不满足描述的条件,则这些函数返回零。 库函数 序号 函数 & 描述 1 int isalnum(int c) 该函数检查所传...原创 2018-02-08 20:31:57 · 623 阅读 · 0 评论 -
C标准库 assert
C标准库的assert.ht头文件提供了一个名为assert的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。 已定义的宏assert指向另一个宏NOEBUG,宏NDEBUG不是<assert.h>的一部分。如果已在引用<assert.h>的源文件中定义NDEBUG为宏名称,则assert宏的定义如下: #define assert(ig...原创 2018-02-08 20:24:33 · 569 阅读 · 0 评论 -
C 文件读写
打开文件 你可以使用fopen()函数创建一个新的文件或者打开一个已有的文件,这个调用会初始化类型FILE的一个对象,类型FILE包含了所有用来控制流的必要的信息。下面是这个函数调用的原型: FILE *fopen( const char * filename, const char * mode );*fopen( const char * filename, const c...原创 2018-02-10 11:14:14 · 164 阅读 · 0 评论 -
C 预处理器
C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。简言之,C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。我们将把 C 预处理器(C Preprocessor)简写为 CPP。 所有的预处理器命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。下面列出了所有重要的预处理器指令:...原创 2018-02-10 11:30:09 · 247 阅读 · 0 评论 -
C 标准库 limits
limits.h头文件决定了各种变量类型的各种属性。定义在该头文件中的宏限制了各种变量类型的值。 这些限制指定了变量不能存储任何超过这些限制值,例如一个无符号可以存储的最大值是255.库宏实例#include <stdio.h>#include <limits.h>int main(){ printf("The number ...原创 2018-02-10 14:15:53 · 497 阅读 · 0 评论 -
C标准库 float
C标准库的float.h头文件包含了一组与浮点值相关的依赖于平台的常量,这些常量是由ANSI C提出的,这让程序更具有可移植性。 库宏 下面的值是特定实现的,且是通过#define指令来定义的,这些值都不得低于下边给出的值。请注意,所有的实例FLT是指类型float,DBL是值类型double,LDBL是指类型long double。 宏 描述 FLT_...原创 2018-02-10 13:49:40 · 451 阅读 · 0 评论 -
C ASCII码
ASCII码表: ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 ASCII值 控制字符 0 NUT 32 (space) 64 @ 96 、 1 SOH 33 ! 65 A 97 a 2 STX 34 " ...原创 2018-02-10 12:07:17 · 570 阅读 · 0 评论 -
C 内存管理
C 语言为内存的分配和管理提供了几个函数,这些函数可以在<stdlib.h>头文件中找到。动态分配内存#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ char name[100]; char *description;...原创 2018-02-10 12:00:04 · 215 阅读 · 0 评论 -
C 可变参数
C 语言为这种情况提供了一个解决方案,它允许您定义一个函数,能根据具体的需求接受可变数量的参数。下面的实例演示了这种函数的定义。 int func(int, ... ) { . . .}int main(){ func(2, 2, 3); func(3, 2, 3, 4);}请注意,函数 func() 最后一个参数写成省略号,即三个点...原创 2018-02-10 11:55:25 · 204 阅读 · 0 评论 -
C 递归
C 语言支持递归,即一个函数可以调用其自身。但在使用递归时,程序员需要注意定义一个从函数退出的条件,否则会进入死循环。 语法格式如下:void recursion(){ recursion(); /* 函数调用自身 */} int main(){ recursion();} 数的阶乘#include <stdio.h> d...原创 2018-02-10 11:52:52 · 376 阅读 · 0 评论 -
C 错误处理
errno、perror()和sterror() C 语言提供了 perror() 和 strerror() 函数来显示与 errno 相关的文本消息。 ·perror() 函数显示您传给它的字符串,后跟一个冒号、一个空格和当前 errno 值的文本表示形式。 ·strerror() 函数,返回一个指针,指针指向当前 errno 值的文本表示形式。被零除的错...原创 2018-02-10 11:49:01 · 422 阅读 · 0 评论 -
C 头文件
头文件是扩展名为 .h 的文件,包含了 C 函数声明和宏定义,被多个源文件中引用共享。有两种类型的头文件:程序员编写的头文件和编译器自带的头文件。 在程序中要使用头文件,需要使用 C 预处理指令 #include 来引用它。前面我们已经看过 stdio.h 头文件,它是编译器自带的头文件。 引用头文件相当于复制头文件的内容,但是我们不会直接在源文件中复制头文件的内容,因...原创 2018-02-10 11:41:20 · 272 阅读 · 0 评论 -
C 基础
C程序结构 ·)c语言程序由函数构成,每个函数可以实现一个或多个功能; ·)一个正规程序可以有多个函数,但是有且只有一个主函数; ·)函数只有在被调用的时候才执行,主函数由系统调用执行; ·)函数的格式必须按照规范书写; ·)C语言程序文件的后缀为.c;关键字 关键字 描述 auto 声明自动变量 double 声明双精度...原创 2018-02-08 18:43:04 · 255 阅读 · 0 评论