<4D F736F F D2043D3EFD1D4B2CEBFBCCAD6B2E15FBAAFCAFDBFE22E646F63>

Size: px
Start display at page:

Download "<4D F736F F D2043D3EFD1D4B2CEBFBCCAD6B2E15FBAAFCAFDBFE22E646F63>"

Transcription

1 版权说明 : 本资料内容摘录自 C 程序设计语言 ( 第二版 ) K&R 著徐宝文李志译尤晋元审校机械工业出版社出版一书 版权属原作者和出版社所有 制作本资料为了我本人学习和参考, 非商业用途 建议读者阅读原书学习比较好, 它更详细 目录 : 附录 B: 标准库介绍标准库的组成, 及使用注意 B.1 输入与输出 :<stdio.h> 主要介绍流的概念等 B.1.1 文件操作主要介绍 fopen(), freopen(), fflush(), fclose(), remove(), rename(), tmpfile(), tmpnam(), setvbuf(),setbuf() 等 B.1.2 格式化输出主要介绍 printf(), fprintf(), sprintf(), vprintf(), vfprintf(), vsprintf() 等 B.1.3 格式化输入主要介绍 fscanf(), scanf(), sscanf() 等 B.1.4 字符输入 / 输出函数主要介绍 fgetc(), fgets(), fputc(), fputs(), getc(), gets(), putc(),puts(), putchar(), ungetc() 等 B.1.5 直接输入输出主要介绍 fread() 和 fwrite() B.1.6 文件定位函数主要介绍 fseek(), ftell(), rewind(), fgetpos(), fsetpos() 等 B.1.7 错误处理函数主要介绍 clearerr(), feof(), ferror(), perror() 等 B.2 字符类别测试 :<ctype.h> 主要介绍 isalnum(c), isalpha(c), iscntrl(c), isdigit(c),, tolower(c), toupper(c) 等 B.3 字符串函数 :<string.h> 主要介绍 strcpy(),strncpy(), strcat(), strncat(), strcmp(), strncmp(), strchar(), strrchr(), strspn(), strcspn(), strpbrk(), strstr(), strlen(), strerror(), strtok() 等 B.4 数学函数 :<math.h> 主要介绍 sin(), cos(), tan(), asin(), acos(), atan(), atan2(), sinh(), cosh(), tanh(), exp() log(), log10(), pow(), sqrt(), ceil(), floor(), fabs(), ldexp(), frexp(), modf(), fmod() 等 B.5 实用函数 :<stdlib.h> 主要介绍 atof(), atoi(), atol(), strtod(), strtoul(), rand(), srand(), calloc(), malloc(), realloc(), free(), abort(), exit(), atexit(), system(), getenv(), bsearch(), qsort(), abs(), labs(), div(), ldiv() 等 B.6 诊断 :<assert.h> 主要介绍 assert() B.7 可变参数表 :<stdarg.h> 主要介绍 va_list, va_start, va_end B.8 非局部跳转 :<setjmp.h> 主要介绍 setjmp(), longjmp() 等 B.9 信号 :<signal.h> 主要介绍 signal(), raise() 等 B.10 日期与时间函数 :<time.h> 主要介绍 clock(), time(), difftime(), mktime(), asctime(), ctime(), strftime() 等 B.11 与具体实现相关的限制 :<limits.h> 和 <folat.h> 主要介绍整型大小的常量, 浮点运算的一些常量 - 1 / 15-

2 附录 B: 标准库本附录总结了 ANSI 标准定义的函数库 标准库不是 C 语言本身的构成部分, 但是支持标准 C 的实现会提供该函数库中的函数声明 类型及宏定义 在这部分内容中, 我们省略了一些使用比较受限的函数以及一些可以通过其他函数简单合成的函数, 也省略了多字节字符的内容, 同时, 也不准备讨论与区域相关的一些属性, 也就是与本地语言 国籍或文化相关的属性 标准库中的函数 类型以及宏分别在下面的标准头文件中定义 : <assert.h> <float.h> <math.h> <stdarg.h> <stdlib.h> <ctype.h> <limits.h> <setjmp.h> <stddef.h> <string.h> <errno.h> <local.h> <signal.h> <stdio.h> <time.h> 可以通过下列方式访问头文件 : #include < 头文件 > 头文件的包含顺序是任意的, 并可包含任意多次 头文件必须被包含在任何外部声明或定义之外, 并且, 必须在使用头文件中的任何声明之前包含头文件 头文件不一定是一个源文件 以下划线开头的外部标识符保留给标准库使用, 同时, 其他所有以一个下划线和一个大写字母开头的标识符以及两个下划线开头的标识符也都保留给标准库使用 B.1 输入输出 :<stdio.h> 头文件 <stdio.h> 中定义的输入和输出函数 类型以及宏的数目几乎占整个标准库的三分之一 流 (stream) 是与磁盘或其他外围设备关联的数据的源或目的地 尽管在某些系统中 ( 如著名的 UNIX 系统中 ), 文本流和二进制流是相同的, 但标准库仍然提供了这两种类型的流 文本流是由文本行组成的序列, 每行包含 0 个或多个字符, 并以 \n 结尾 在某些环境中, 可能需要将文本流转换为其他表示形式 ( 例如把 \n 映射成回车符和换行符 ), 或从其他表示形式转换为文本流 二进制流是由未经处理的字节构成的序列, 这些字节记录着内部数据, 并具有下列性质 : 如果在同一系统中写入二进制流, 然后再读取该二进制流, 则读出和写入的内容完全相同 打开一个流, 将把流与一个文件或设备连接起来, 关闭流将断开这种连接 打开一个文件将返回一个指向 FILE 类型对象的指针, 该指针记录了控制该流的所有必要信息 在不引起歧义的情况下, 我们在下文中将不再区分 文件指针 和 流 程序开始执行是,stdin stdout 和 stderr 这 3 个流已经处于打开状态 B.1.1 文件操作 下列函数用于处理与文件有关的操作 其中, 类型 size_t 是由运算符 sizeof 生成的无符号整形 FILE *fopen(const char *filename, const char *mode) fopen 函数打开 filename 指定的文件, 并返回一个与之相关联的流 如果打开失败, 则返回 NULL 访问模式 mode 可以为下列合法值之一 : r 打开文本文件用于读 w 创建文本文件用于写, 并删除已存在的内容 ( 如果有的话 ) a 追加 ; 打开或创建文本文件, 并向文件末尾追加内容 r+ 打开文本文件用于更新 ( 即读和写 ) w+ 创建文本文件用于更新, 并删除已存在的内容 ( 如果有的话 ) a+ 追加 ; 打开或创建文本文件用于更新, 写文件时追加到文件末尾后三种方式 ( 更新方式 ) 允许对同一个文件进行读和写 在读和写的交叉过程中, 必须调用 fflush 函数或文件定位函数 如果在上述访问模式之后再加上 b, 如 rb 或 w+b 等, 则表示对二进制文件进行操作 文件名 filname 限定最多为 FILENAME_MAX 个字符 一次最多可打开 FOPEN_MAX 个文件 FILE *freopen(const char *filename, const char *mode, FILE *stream) freopen 函数以 mode 指定的模式打开 filename 指定的文件, 并将该文件关联到 stream 指定的流 它返回 stream; 若出错则返回 NULL freopen 函数一般用于改变与 stdin stdout 和 stderr 相关联的文件 - 2 / 15-

3 int fflush(file *stream) 对输出流来说,fflush 函数将已写到缓冲区但尚未写入文件的所有数据写到文件中 对输入流来说, 其结果是未定义的 如果在写的过程中发生错误, 则返回 EOF, 否则返回 0 fflush(null) 将清洗所有的输出流 int fclose(file *stream) fclose 函数将所有未写入的数据写入 stream 中, 丢弃缓冲区中的所有未读输入数据, 并释放自动分配的全部缓冲区, 最后关闭流 若出错则返回 EOF, 否则返回 0 int remove(const char *filename) remove 函数删除 filename 指定的文件, 这样, 后续试图打开该文件的操作将失败 如果删除操作失败, 则返回一个非 0 值 int rename(const char *oldname, const char *newname) rename 函数修改文件的名字 如果操作失败, 则返回一个非 0 值 FILE *tmpfile(void) tmpfile 函数以模式 w+b 创建一个临时文件, 该文件在被关闭或程序正常结束时将被自动删除 如果创建操作成功, 该函数返回一个流 ; 如果创建文件失败, 则返回 NULL char *tmpnam(char s[l_tmpnam]) tmpnam(null) 函数创建一个与现有文件名不同的字符串, 并返回一个指向一内部静态数组的指针 tmpname(s) 函数把创建的字符串保存到数组 s 中, 并将它作为函数值返回 s 中至少要有 L_tmpnam 个字符的空间 tmpnam 函数在每次被调用时均生成不同的名字 在程序执行的过程中, 最多只能确保生成 TMP_MAX 个不同的名字 注意, tmpnam 函数只能用于创建一个名字, 而不能创建一个文件 int setvbuf(file *stream, char *buf, int mode, size_t size) setvbuf 函数控制流 stream 的缓冲 在执行读 写以及其他任何操作之前必须调用此函数 当 mode 的值为 _IOFBF 时, 将进行完全缓冲 当 mode 的值为 _IOLBF 时, 将对文本文件进行行缓冲, 当 mode 的值为 _IONBF 时, 表示不设置缓冲 如果 buf 的值不是 NULL, 则 setvbuf 函数将 buf 指向的区域作为流的缓冲区, 否则将分配一个缓冲区 size 决定缓冲区的长度 如果 setvbuf 函数出错, 则返回一个非 0 值 void setbuf(file *stream, char *buf) 如果 buf 的值为 NULL, 则关闭流 stream 的缓冲 ; 否则 setbuf 函数等价于 (void)setvbuf(stream, buf, _IOFBF, BUFSIZ) B.1.2 格式化输出 printf 函数提供格式化输出转换 int fprintf(file *stream, const char *format, ) fprintf 函数按照 format 说明的格式对输出进行转换, 并写到 stream 流中 返回值是实际写入的字符数 若出错则返回一个负值 格式串由两种类型的对象组成 : 普通字符 ( 将被复制到输出流中 ) 与转换说明 ( 分别决定下一后续参数的转换和打印 ) 每个转换说明均以字符 % 开头, 以转换字符结束 在 % 与转换字符之间可以依次包含下列内容 : 标志 ( 可以以任意顺序出现 ), 用于修改转换说明 - 指定被转换的参数在其字段内左对齐 + 指定在输出的数前面加上正负号空格如果第一个字符不是正负号, 则在其前面加上空格 0 对于数值转换, 当输出长度小于字段宽度时, 添加前导 0 进行填充 # 指定另一种输出形式 如果为 O 转换, 则第一个数字为零 ; 如果为 x 或 X 转换, 指定在输出的非 0 值前加 0x 或 0X; 对于 e E f g 或 G 转换, 指定输出总包括一个小数点 ; 对于 g 或 G 转换, 值尾部无意义的 0 将被保留 - 3 / 15-

4 一个数值, 用于指定最小字段宽度 转换后的参数输出宽度至少要达到这个数值 如果参数的字符数小于此数值, 则在参数左边 ( 如果要求左对齐的话则为右边 ) 填充一些字符 填充字符通常为空格, 但是, 如果设置了 0 填充标志, 则填充字符为 0 点号, 用于分隔字段宽度的精度 表示精度的数 对于字符串, 它指定打印的字符的最大个数 ; 对于 e E 或 f 转换, 它指定打印的小数点后的数字位数 ; 对于 g 或 G 转换, 它指定打印的有效数字位数 ; 对于整型数, 它指定打印的数字位数 ( 必要时可加填充为 0 以达到要求的精度 ) 长度修饰符 h l 或 L h 表示将相应的参数按 short 或 unsigned short 类型输出 l 表示将相应的参数按 long 或 unsigned long 类型输出 ; L 表示将相应的参数按照 long double 类型输出 宽度和精度中的一个或两个都可以用 * 指定, 这种情况下, 该值将通过转化下一个参数计算得到 ( 下一个参数必须为 int 类型 ) 表 B-1 中列出了这些转换字符及其意义 如果 % 后面的字符不是转换字符, 则其行为没有定义 表 B-1 printf 函数的转换字符 转换字符 参数类型 ; 转换结果 d,i int; 有符号十进制表示 o unsigned int; 无符号八进制表示 ( 无前导 0) x, X unsigned int; 无符号十六进制表示 ( 无前导 0x 和 0X) 如果是 0x, 则使用 abcdef, 如果是 0X, 则使用 ABCDEF u int; 无符号十进制表示 c int; 转换为 unsigned char 类型后为一个字符 s char *; 打印字符串中的字符, 直到遇到 \0 或者已打印了由精度指定的字符数 f double; 形式为 [-]mmm.ddd 的十进制表示, 其中,d 的数目由精度确定, 默认精度为 6 精度为 0 时, 不输出小数点 e,e double; 形式为 [-]m.dddddd e±xx 或 [-]m.dddddd E±xx 的十进制表示 d 的数目由精度确定, 默认精度为 6 精度为 0 时不输出小数点 g,g double; 当指数小于 -4 或大于等于精度是, 采用 %e 或 %E 的格式, 否则采用 %f 的格式 尾部的 0 与小数点不打印 p void *; 打印指针值 ( 具体表示方法与实现有关 ) n int *; 到目前为止, 此 printf 调用输出的字符的数目将被写入到相应参数中 不进行参数转换 % 不进行参数转换 ; 打印一个符号 % int printf(const char *format, ) printf( ) 函数等价于 fprintf(stdout, ) int sprintf(char *s, const char *format, ) sprintf 函数与 printf 函数基本相同, 但其输出将被写到字符串 s 中, 并以 \0 结束 s 必须足够大, 以足够容纳输出结果 该函数返回实际输出的字符数, 不包括 \0 int vprintf(const char *format, va_list arg) int vfprintf(file *stream, const char *format, va_list arg) int vsprintf(char *s, const char *format, va_list arg) vprintf vfprintf vsprintf 这三个函数分别于对应的 printf 函数等价, 但它们用 arg 代替了可变参数表 arg 有宏 va_start 初始化, 也可能由 va_arg 调用初始化 详细的信息参见 B.7 节中对 <stdarg.h> 头文件的讨论 B.1.3 格式化输入 scanf 函数处理格式化输入转换 int fscanf(file *stream, const char *format, ) - 4 / 15-

5 fscanf 函数根据格式串 format 从流 stream 中读取输入, 并把转换后的值赋给后续各个参数, 其中的每个参数都必须是一个指针 当格式串 format 用完时, 函数返回 如果到达文件的末尾或在转换输入前出错, 该函数返回 EOF; 否则, 返回实际被转换并赋值的输入项的数目 格式串 format 通常包括转换说明, 它用于指导对输入进行解释 格式字符串中可以包含下列项目 : 空格或制表符 普通字符 (% 除外 ), 它将与输入流中下一个非空白字符进行匹配 转换说明, 由一个 % 一个赋值屏蔽字符 *( 可选 ) 一个指定最大字段宽度的数 ( 可选 ) 一个指定目标字段宽度的字符 (h l 或 L)( 可选 ) 以及一个转换字符组成 转换说明决定了下一个输入字段的转换方式 通常结果将被保存在由对应参数指向的变量中 但是, 如果转换说明中包含赋值屏蔽字符 *, 例如 %*s, 这将跳过对应的输入字段, 并不进行赋值 输入字段是一个由非空白字符组成的字符串, 当遇到下一个空白字符或达到最大字段宽度 ( 如果有的话 ) 时, 对当前输入字段的读取结束 这意味着,scanf 函数可以跨越行的边界读取输入, 因为换行符也是空白符 ( 空白符包括空格 横向制表符 纵向制表符 换行符 回车符和换页符 ) 换行字符说明了对输入字段的解释方式 对应的参数必须是指针 合法的转换字符如表 B-2 所示 如果参数是指向 short 类型而非 int 类型的指针, 则在转换字符 d i n o u 和 x 之前可以加上前缀 h 如果参数是指向 long 类型的指针, 则在这几个转换字符前可以加上字母 l 如果参数是指向 double 类型而非 float 类型的指针, 则在转换字符 e f 和 g 前可以加上字母 l 如果参数是指向 long double 类型的指针, 则在转换字符 e f 和 g 前可以加上字母 L 表 B-2 scanf 函数的转换字符 转换字符 输入数据 ; 参数类型 d 十进制整型数 ;int * i 整型数 ;int * 该整型数可以是八进制数( 以 0 打头 ) 或十六进制数 ( 以 0x 或 0X 打头 ) o 八进制整型数 ( 可以带或不带前导 0);int * u 无符号十进制整型数 ;unsigned int * x 十六进制整型数 ( 可以带或不带前导 0x 或 0X):int * c 字符 ;char *, 按照字段宽度的大小把读取的字符保存到指定的数组中, 不增加字符 \0 字段宽度的默认值为 1 在这种情况下, 读取输入时将不跳过空白符, 如果要读取下一个非空白字符, 可以使用 %ls s 由空白符组成的字符串 ( 不包含引号 );char * 它指向一个字符数组, 该字符数组必须有足够的空间, 以保存该字符串以及在尾部添加的 \0 字符 e f g 浮点数 ;float * float 类型浮点数的输入格式为 : 一个可选的正负号 一个可能包含小数点的数字串 一个可选的指数字段 ( 字母 e 或 E 后跟一个可能带正负号的整型数 ) p printf( %p ) 函数调用打印的指针值 :void * n 将到目前为止该函数调用读取的字符数写入对应的参数中 ;int * 不读取输入字符 不增加已转换的项目计数 [ ] 与方括号中的字符集合匹配的输入字符中最长的非空字符串 ;char * 末尾将添加字符 \0 [^ ] 与方括号中的字符集合不匹配的输入字符中最长的非空字符串 ;char * 末尾将添加字符 \0 % 表示 %, 不进行赋值 int scanf(const char *format, ) scanf( ) 函数与 fscanf(stdin, ) 相同 int sscanf(const char *s, const char *format, ) sscanf(s, ) 函数与 scanf( ) 等价, 所不同的是, 前者的输入字符来源于字符串 s B.1.4 字符输入 / 输出函数 int fgetc(file *stream) - 5 / 15-

6 fgetc 函数返 stream 流的下一个字符, 返回类型为 unsigned char( 被转换为 int 类型 ) 如果到达文件末尾或发生错误, 这返回 EOF char *fgets(char *s, int n, FILE *stream) fgets 函数最多将 n-1 个字符读入到数组 s 中 当遇到换行符时, 把换行符读入到数组 s 中, 读取过程终止 数组 s 以 \0 结尾 fgets 函数返回数组 s 如果到达文件的末尾或发生错误, 则返回 NULL int fputc(int c, FILE *stream) fputc 函数把字符 c( 转换为 unsigned char 类型 ) 输出到流 stream 中 它返回写入的字符, 错误则返回 EOF int fputs(const char *s, FILE *stream) fputs 函数把字符串 s( 不包含字符 \n ) 输出到流 stream 中 ; 它返回一个非负值, 若出错返回 EOF int getc(file *stream) getc 函数等价于 fgetc, 所不同的是, 当 getc 函数定义为宏时, 它可能多次计算 stream 的值 int getchar(void) getchar 函数等价于 getc(stdin) char *gets(char *s) gets 函数把下一个输入行读入到数组 s 中, 并把末尾的换行字符替换为字符 \0 它返回数组 s, 如果到达文件末尾或发生错误, 这返回 NULL int putc(int c, FILE *stream) putc 函数等价于 fputc, 所不同的是, 当 putc 函数定义为宏时, 它可能多次计算 stream 的值 int putchar(int c) putchar(c) 函数等价于 putc(c,stdout) int puts(const char *s) puts 函数把字符串 s 和一个换行字符输出到 stdout 中 如果发生错误, 则返回 EOF; 否则返回一个非负值 int ungetc(int c, FILE *stream) ungetc 函数把 c( 转换为 unsigned char 类型 ) 写回到流 stream 中, 下次对该流进行操作时, 将返回该字符 对每个流只能写回一个字符, 且此字符不能是 EOF ungetc 函数返回被写回的字符 ; 如果发生错误, 则返回 EOF B.1.5 直接输入 / 输出函数 size_t fread(void *ptr, size_t size, size_t nobj, FILE *stream) fread 函数从流 stream 中读取最大 nobj 个长度为 size 的对象, 并保存到 ptr 指向的数组中 它返回读取的对象数目, 此返回值可能小于 nobj 必须通过函数 feof 和 ferror 获得结果执行状态 size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *stream) fwrite 函数从 ptr 指向的数组中读取 nobj 个长度为 size 的对象, 并输出到流 stream 中 它返回输出的对象数目 如果发生错误, 返回值会小于 nobj 的值 B.1.6 文件定位 int fseek(file *stream, long offset, int origin) fseek 函数设置流 stream 的文件位置, 后续的读写操作将从新位置开始 对于二进制文件, 此位置被设置为从 origin 开始的第 offset 个字符处 origin 的值可能为 SEEK_SET( 文件开始处 ) SEEK_CUR( 当前位置 ) 或 - 6 / 15-

7 SEEK_END( 文件结束 ) 对于文本流,offset 必须设置为 0, 或者由函数 ftell 返回的值 ( 此时 origin 的值必须是 SEEK_SET) fseek 函数在出错时返回一个 0 值 long ftell(file *stream) ftell 函数返回 stream 流的当前文件位置 出错时该函数返回 -1L void rewind(file *stream) rewind(fp) 函数等价于语句 fseek(fp, 0L,SEEK_SET);clearerr(fp) 的执行结果 int fgetpos(file *stream, fpos_t *ptr) fgetpos 函数把 stream 流的当前位置记录在 *ptr 中, 供随后的 fsetpos 函数调用使用 若出错者返回一个非 0 值 int fsetpos(file *stream, const fpos_t *ptr) fsetpos 函数将流 stream 的当前位置设置为 fgetpos 记录在 *ptr 中的位置 若出错则返回一个非 0 值 B.1.7 错误处理函数 当发生错误或到达文件末尾时, 标准库中的许多函数都会设置状态指示符 这些状态指示符可被显示地设置和测试 另外, 整型表达式 errno( 在 <errno.h> 中声明 ) 可能包含一个错误编号, 据此可以进一步了解最近一次出错的信息 void clearerr(file *stream) clearerr 函数清除与流 stream 相关的文件结束符和错误指示符 int feof(ifle *stream) 如果设置了与 stream 流相关的文件结束符,feof 函数将返回一个非 0 值 void ferror(file *stream) 如果设置了与 stream 流相关的错误指示符,ferror 函数将返回一个非 0 值 void perror(const char *s) perror(s) 函数打印字符串 s 以及与 errno 中整型值对应的错误信息, 错误信息的具体内容与具体的实现相关 该函数的功能类似于执行下列语句 : fprintf(stderr, %s:%s\n, s, error message ) 有关函数 strerror 的信息, 参见 B.3 节中的介绍 B.2 字符类别测试 :<ctype.h> 头文件 <ctypte.h> 中声明了一些测试字符的函数 每个函数的参数均为 int 类型, 参数的值必须是 EOF 或可用 unsigned char 类型表示的字符, 函数的返回值为 int 类型 如果参数 c 满足指定的条件, 则函数返回非 0 值 ( 表 示真 ), 否则返回 0( 表示假 ) 这些函数包括: isalnum(c) 函数 isalpha(c) 或 isadigit(c) 为真 isalpha(c) 函数 isupper(c) 或 islower(c) 为真 iscntrl(c) c 为控制字符 isdigit(c) c 为十进制数字 isgraph(c) c 为除空格的可打印字符 islower(c) c 是小写字母 isprint(c) c 是包括空格的可打印字符 ispunct(c) c 是出空格, 字母和数字外的可打印字符 isspace(c) c 是空格, 换页符, 换行符, 回车符, 横向制表符或纵向制表符 isupper(c) c 是大写字母 isxdigit(c) c 是十六进制数字 - 7 / 15-

8 在 7 位 ASCII 字符集中, 可打印字符是 0x20( ) 到 0x7E( - ) 之间的字符 ; 控制字符是从 0(NULL) 到 0x1F(US) 之间的字符以及字符 0x7F(DEL) int tolower(int c) 将 c 转换为小写字母 int toupper(int c) 将 c 转换为大写字母如果 c 是大写字母, 则 tolower(c) 返回相应的小写字母, 否则返回 c 如果 c 是小写字母, 则 toupper(c) 返回相应的大写字母, 否则返回 c B.3 字符串函数 :<string.h> 头文件 <string.h> 中定义了两组字符串函数 第一组函数的名字以 str 开头 ; 第二组函数的名字以 mem 开头 除函数 memmove 外, 其他函数都没有定义重叠对象间的复制行为 比较函数将把参数作为 unsigned char 类型的数组看待 在下表中, 变量 s 和 t 的类型为 char *;cs 和 ct 的类型为 const char *;n 的类型为 size_t;c 的类型为 int( 将被转换为 char 类型 ) char *strcpy(s, ct) 将字符串 ct( 包括 '\0') 复制到字符串 s 中, 并返回 s char *strncpy(s, ct, n) 将字符串 ct 中最多 n 个字符复制到字符串 s 中, 并返回 s 如果 ct 中少于 n 个字符, 则用 '\0' 填充 char *strcat(s, ct) 将字符串 ct 连接到字符串 s 的尾部, 并返回 s char *strncat(s, ct, n) 将字符串 ct 中最多 n 个字符连接到字符串 s 的尾部, 并以 '\0' 结束 ; 函数返回 s int strcmp(cs, ct) 比较字符串 cs 和 ct; 当 cs<ct 时, 返回一个负数 ; 当 cs==ct 时, 返回 0; 当 cs>ct 时, 返回正数 int strncmp(cs, ct, n) 比较字符串 cs 中至多前 n 个字符与字符串 ct 相比较 ; 当 cs<ct 时, 返回一个负数 ; 当 cs==ct 时, 返回 0; 当 cs>ct 时, 返回正数 char *strchr(cs, c) 返回指向字符 c 在字符串 cs 中第一次出现的位置的指针 ; 如果 cs 中不包含 c, 则返回 NULL char *strrchr(cs, c) 返回指向字符 c 在字符串 cs 中最后一次出现的位置的指针 ; 如果 cs 中不包含 c, 则返回 NULL size_t strspn(cs, ct) 返回字符串 cs 中包含 ct 中的字符的前缀长度 size_t strcspn(cs, ct) 返回字符串 cs 中不包含 ct 中的字符的前缀长度 char *strpbrk(cs, ct) 返回一个指针, 它指向字符串 ct 中的任意字符第一次出现在字符串 cs 中的位置 ; 如果 cs 中没有与 ct 相同的字符, 则返回 NULL char *strstr(cs, ct) 返回一个指针, 他指向字符串 ct 中第一次出现在字符串 cs 中的位置 ; 如果 cs 中不包含字符串 ct, 则返回 NULL size_t strlen(cs) 返回字符串 cs 的长度 char *strerror(n) 返回一个指针, 它指向与错误编号 n 对应的错误信息字符串 ( 错误信息的集体内容与具体实现相关 char *strtok(s, ct) strtok 函数在 s 中搜索由 ct 中的字符界定记号 详细信息参见下面讨论 对 strtok(s,ct) 进行一系列调用, 可以把字符串 s 分成许多记号, 这些记号以 ct 中的字符为分界符 第一次调用时,s 为非空 它搜索 s, 找到不包含 ct 中字符的第一个记号, 将 s 中的下一个字符替换为 \0, 并返回指向记号的指针 随后, 每次调用 strtok 函数时 ( 由 s 的值是否为 NULL 指示 ), 均返回下一个不包含 ct 中字符的记号 当 s 中没有这样的记号时, 返回 NULL 每次调用时字符串 ct 可以不同 以 mem 开头的函数按照字符数组的方式操作对象, 其主要目的是提供一个高效的函数接口 在下表列出的函数中,s 和 t 的类型均为 void *,cs 和 ct 的类型均为 const void *,n 的类型为 size_t, c 的类型均为 int( 将被转换为 unsigned char 类型 ) void *memcpy(s, ct, n) void *memmove(s, ct, n) void memcmp(cs, ct, n) 将字符串 ct 中的 n 个字符拷贝到 s 中, 并返回 s 该函数的功能与 memcpy 相似, 所不同是, 当对象重叠时, 该函数仍能正确执行将 cs 的前 n 个字符与 ct 进行比较, 其返回值与 strcmp 的返回值相同 - 8 / 15-

9 void *memchar(cs, c, n) void *memset(s, c, n) 返回一个指针, 它指向 c 在 cs 中第一次出现的位置 如果在 cs 的前 n 个字符中找不到匹配, 则返回 NULL 将 s 中的前 n 个字符替换为 c, 并返回 s B.4 数学函数 :<math.h> 头文件 <math.h> 中声明了一些数学函数和宏 宏 EDOM 和 ERANGE( 在头文件 <error.h> 中声明 ) 是两个非 0 整型常量, 用于指示函数的定义域错误和值域错误 ;HUGE_VAL 是一个 double 类型的正数 当参数位于函数定义的作用域之外时, 就会出现定义域错误 在发生定义域错误是, 全局变量 errno 的值将被设置为 EDOM, 函数的返回值与具体实现相关 如果函数的结果不能用 double 类型表示, 则会发生值域错误 当结果上溢时, 函数返回 HUGE_VAL, 并带有正确的正负号,errno 的值将被设置为 ERANGE 当结果下溢时, 函数返回 0, 而 errno 是否设置为 ERANGE 要视具体的实现而定 在下表中,x 和 y 的类型为 double,n 的类型为 int, 所有函数的返回值的类型均为 double 三角函数的角度 用弧度表示 sin(x) x 的正弦值 cos(x) x 的余弦值 tan(x) x 的正切值 asin(x) 值域为 [-π/2,π/2], 其中 x [-1,1] acos(x) 值域为 [0,π], 其中 x [-1,1] atan(x) 值域为 [-π/2,π/2] atan2(y, x) 值域为 [-π,π] sinh(x) x 的双曲正弦值 cosh(x) x 的双曲余弦值 tanh(x) x 的双曲正切值 exp(x) 幂函数 log(x) 自然对数 ln(x), 其中 x 0 log10(x) 以 10 为底的对数 log10(x), 其中 x 0 pow(x, y) x 的 y 次方, 如果 x=0 且 y =0, 或者 x 0 且 y 不是整数, 都产生定义域错误 sqrt(x) x 的平方根, 其中 x =0 ceil(x) 不小于 x 的最小整数, 其中 x 的类型为 double floor(x) 不大于 x 的最大整数, 其中 x 的类型为 double fabs(x) x 的绝对值 ldexp(x, n) 计算 x*(2 的 n 方 ) 的值 frexp(x, int *exp) modf(x, double *ip) fmod(x, y) 求 x/y 的浮点余数, 符号与 x 相同 如果 y 为 0, 则结果与具体的实现相关 B.5 实用函数 :<stdio.h> 头文件 <stdio.h> 中声明了一些执行数值转换 内存分配以及其他类似工作的函数 double atof(const char *s) atof 函数将字符串 s 转换为 double 类型 该函数等价于 strtod(s,(char**)null) int atoi(const char *s) atoi 函数将字符串 s 转换为 int 类型 该函数等价于 (int)strtol(s,(char**)null, 10) long atol(const char *s) atol 函数将字符串 s 转换为 long 类型 该函数等价于 strtol(s,(char**)null, 10) double strtod(const char *s, char **endp) - 9 / 15-

10 strtod 函数将字符串 s 的前缀转换为 double 类型, 并在转换时跳过 s 的前导空白符 除非 endp 为 NULL, 否则该函数将把指向 s 中未转换部分 (s 的后缀部分 ) 的指针保存在 *endp 中 如果结果上溢, 则函数返回带有适当符号的 HUGE_VAL; 如果结果下溢, 则返回 0 在这两种情况下,errno 都将被设置为 ERANGE long strtol(const char *s, char **endp, int base) strtol 函数将字符串 s 的前缀转换为 long 类型, 并在转换时跳过 s 的前导空白符 除非 endp 为 NULL, 否则该函数将把指向 s 中未转换部分 (s 的后缀部分 ) 的指针保存在 *endp 中 如果 base 的取值在 2~36 之间, 则假定输入时以该数为基地的 ; 如果 base 的值为 0, 则基底为八进制 十进制或十六进制 以 0 为前缀的是八进制, 以 0x 或 0X 为前缀的是十六进制 无论在哪种情况下, 字母均表示 10~base-1 之间的数字 如果 base 值是 16, 则可以加前导 0x 或 0X 如果结果上溢, 则函数根据结果的符号返回 LONG_MAX 或 LONG_MIN, 同时将 errno 的值设置为 ERANGE unsigned long strtoul(const char *s, char **endp, int base) strtoul 函数的功能与 strtol 函数相同, 但其结果为 unsigned long 类型, 错误值为 ULONG_MAX int rand(void) rand 函数产生一个 0~RAND_MAX 之间的伪随机整数 RAND_MAX 的取值至少为 void srand(unsigned int seed) srand 函数将 seed 作为生成新的随机数序列的种子 种子数 seed 的初值为 1 void *calloc(size_t nobj, size_t size) calloc 函数为由 nobj 个长度为 size 的对象组成的数组分配内存, 并返回指向分配区域的指针 ; 若无法满足要求, 则返回 NULL 该空间的初始长度为 0 字节 void *malloc(size_t size) malloc 函数为长度为 size 的对象分配内存, 并返回指向分配区域的指针 ; 若无法满足要求, 则返回 NULL 该函数不对分配的内存区域进行初始化 void *realloc(void *p, size_t size) realloc 函数将 p 指向的对象的长度修改为 size 个字节 如果新分配的内存比原内存大, 则原内存的内容保持不变, 增加的空间不进行初始化 如果新分配的内存比原内存小, 则新分配内存单元不被初始化 realloc 函数返回指向新分配空间的指针 ; 若无法满足要求, 则返回 NULL, 在这种情况下, 原指针 p 指向的单元内容保持不变 void free(void *p) free 函数释放 p 指向的内存空间 当 p 的值为 NULL 时, 该函数不执行任何操作 p 必须指向先前使用动态分配函数 malloc realloc 或 calloc 分配的空间 void abort(void) abort 函数使程序非正常终止 其功能与 raise(sigabrt) 类似 void exit(int status) exit 函数使程序正常终止 atexit 函数的调用顺序与登记的顺序相反, 这种情况下, 所有已打开的文件缓冲区将被清洗, 所有已打开的流将被关闭, 控制也将返回给环境 status 的值如何返回各环境要视具体的实现而定, 但 0 值表示终止成功 也可能是用值 EXIT_SUCCESS 和 EXIT_FAILURE 作为返回值 atexit 函数登记函数 fcn, 该函数将在程序正常终止时被调用 若果登记失败, 则返回非 0 值 int atexit(void (*fcn)(void)) atexit 函数登记函数 fcn, 该函数将在程序正常终止时被调用 如果登记失败, 则返回非 0 值 int system(const char *s) system 函数将字符串 s 传递给执行环境 如果 s 的值为 NULL, 并且有命令处理程序, 则这个函数返回非 0 值 如果 s 的值不是 NULL, 则返回值与具体的实现有关 - 10 / 15-

11 char *getenv(const char *name) getenv 函数返回与 name 有关的环境字符串 如果该字符串不存在, 则返回 NULL 其细节与具体的实现有关 void bserch(const void key, const void base, size_t n, size_t size, int (*cmp)(const void *, const void *)) bsearch 函数在 base[0] base[n-1] 之间查找与 *key 匹配的项 在函数 cmp 中, 如果第一个参数 ( 查找关键字 ) 小于第二个参数 ( 表项 ), 它必须返回一个负值 ; 如果第一个参数等于第二个参数, 它必须返回 0; 如果第一个参数大于第二个参数, 它必须返回一个正值 数组 base 中的项必须按升序排列 bsearch 函数返回一个指针, 它指向一个匹配项, 如果不存在匹配项, 则返回 NULL void qsort(void base, size_t n, size_t size, int (*cmp)(const void, const void *)) qsort 函数对 base[0] base[n-1] 数组中的对象进行升序排列, 数组中每一个对象的长度为 size 比较函数 cmp 与 bsearch 函数中的描述相同 int abs(int n) abs 函数返回 int 类型参数 n 的绝对值 long labs(long n) labs 函数返回 long 类型参数 n 的绝对值 div_t div(int num, int denom) div 函数计算 num/denom 的商和余数, 并把结果分别保存在结构类型 div_t 的两个 int 类型的成员 quot 和 rem 中 ldiv_t ldiv(long num, long denom) ldiv 函数计算 num/denom 的商和余数, 并把结果分别保存在结构类型 ldiv_t 的两个 long 类型的成员 quot 和 rem 中 B.6 诊断 <assert.h> assert 函数宏用于为程序增加诊断功能 其形式如下 : void assert(int 表达式 ) 如果执行语句 assert( 表达式 ) 时, 表达式的值为 0, 则 assert 宏将在 stderr 中打印一条消息, 比如 : Assertion failed: 表达式 : 表达式,file 源文件名,line 行号打印消息后, 该宏将调用 abort 终止程序的执行 其中的源文件名和行号来自预处理器宏 FILE 及 LINE 如果定义了宏 NDEBUG, 同时又包含了头文件 <assert.h>, 则 assert 宏将被忽略 B.7 可变参数表 :<stdarg.h> 头文件 <stdarg.h> 提供了遍历未知数目和类型的函数参数表的功能 假定函数 f 带有可变数目的实际参数,lastarg 是它的最后一个命名形式参数 那么, 在函数 f 内声明一个类型为 va_list 的变量 ap, 它将依次指向每一个实际参数 ; va_list ap; 在访问任何未命名的参数前, 必须用 va_start 宏初始化 ap 一次 va_start(va_list ap, lastarg); 此后, 每次执行宏 va_arg 都将产生一个与下一个未命名的参数具有相同的数值的值, 它同时还修改 ap, 以使下一次执行 va_arg 时返回下一个参数 : 类型 va_arg(va-list ap); 在所有的参数处理完毕后, 且在退出函数 f 之前, 必须调用宏 va_end 一次, 如下所示 : void va_end(va_list ap); - 11 / 15-

12 B.8 非局部跳转 :<setjmp.h> 头文件 <setjmp.h> 中的声明提供了一种不同于通常的函数调用和返回顺序的方式, 特别是, 它允许立即从一个深层嵌套的函数调用中返回 int setjmp(jmp_buf env) setjmp 宏将状态信息保存到 env 中, 供 longjmp 使用 如果直接调用 setjmp, 则返回值为 0; 如果是在 longjmp 中调用 setjmp, 则返回值为非 0 setjmp 只是用于某些上下文中, 如用于 if 语句,switch 语句 循环语句的条件测试中及一些简单的关系表达式中 例如 : if(setjmp(env) == 0) /* 直接调用 setjmp 时, 转移到这里 */ else /* 调用 longjmp 时, 转移到这里 */ void longjmp(jmp_buf env, int val) longjmp 通过最近一次调用 setjmp 时保存到 env 中的信息恢复状态, 同时, 程序重新恢复执行, 其状态等同于 setjmp 宏调用刚刚执行完并返回非 0 值 val 包含 setjmp 宏调用的函数的执行必须还没有终止 除下列情况外, 可访问对象的值同调用 longjmp 时的值相同 ; 在调用 setjmp 宏后, 如果调用 setjmp 宏的函数中的非 volatile 自动变量改变了, 则它们将变成未定义状态 B.9 信号 :<signal.h> 头文件 <signal.h> 提供了一些处理程序运行期间引发的各种异常条件的功能, 比如来源于外部的中断信号或程序执行错误引起的中断信号 void (*signal(int sig, void (*handler)(int)))(int) signal 决定了如何处理后续的信号 如果 handler 的值是 SIG_DFL, 则采用由实现定义的默认行为 ; 如果 handler 的值是 SIG_IGN, 则忽略该信号 ; 否则, 调用 handler 指向的函数 ( 以信号作为参数 ) 有效的信号包括 : SIGABRT 异常终止, 例如由 abort 引起的终止 SIGFPE 算数运算出错, 如除数为 0 或溢出 SIGILL 非法函数映像, 如非法指令 SIGINT 用于交互式目的信号, 如中断 SIGSEGV 非法存储器访问, 如访问不存在的内存单元 SIGTERM 发送给程序的终止请求对于特定的信号,signal 将返回 handler 的前一个值 ; 如果出现错误, 则返回值 SIG_ERR 当随后碰到信号 sig 时, 该函数将恢复为默认行为, 随后调用信号处理程序, 就好像由 (*handler)(sig) 调用的一样 信号处理程序返回后, 程序将从信号发生的位置重新开始执行 信号的初始状态由具体的实现定义 int raise(int sig) raise 向程序发送信号 sig 如果发送不成功, 则返回一个非 0 值 B.10 日期与时间函数 :<time.h> 头文件 <time.h> 中声明了一些处理日期与时间的类型和函数 其中的一些函数用于处理当地时间, 因为时区等 原因, 当地时间与日历时间可能不同 clock_t 和 time_t 是两个表示时间的算术类型,struct tm 用于保存日历时 间的各个构成部分 结构 tm 中各个成员的用途及取值范围如下所示 : int tm_sec; 从当前分钟开始经过的秒数 (0,61) int tm_min; 从当前小时开始经过的分钟数 (0,59) int tm_hour; 从午夜开始经过的小时数 (0,22) int tm_mday; 当月的天数 (1,31) int tm_mon; 从 1 月起经过的月数 (0,11) int tm_year; 从 1990 年起经过的年数 - 12 / 15-

13 int tm_wday; 从星期天起经过的天数 (0,6) int tm_yday; 从 1 月 1 日起经过的天数 (0,365) int tm_isdst; 夏令时标记 使用夏令时时,tm_isdst 的值为正, 否则为 0 如果该信息无效, 则其值为负 clock_t clock(void) clock 函数返回程序开始执行后占用的处理器时间 如果无法获得处理器时间, 则返回值为 -1 clock()/clocks_per_sec 是以秒为单位表示的时间 time_t time(time_t *tp) time 函数返回当前日历时间 如果无法获取日历时间, 则返回值为 -1 如果 tp 不是 NULL, 则同时将返回值赋给 *tp double difftime(time_t time2, time_t time1) difftime 函数返回 time2-time1 的值 ( 以秒为单位 ) time_t mktime(struct tm *tp) mktime 函数将结构 *tp 中的当地时间转换为与 time 表示方式相同的日历时间 结构中各成员的值位于上面所示范围内 mktime 函数返回转换后得到的日历时间 ; 如果该时间不能表示, 返回 -1 下面 4 个函数返回指向可别其他函数调用覆盖的静态对象的指针 char *asctime(const struct tm *tp) asctime 函数将结构 *tp 中的时间转换为下列所示的字符串形式 : Sun Jan 3 15:14: \n\0 char *ctime(const time_t *tp) ctime 函数将结构 *tp 中的日历时间转换为当地时间 它等价于下列函数调用 : asctime(localtime(tp)) struct tm *gmtime(const time_t *tp) gmtime 函数将 *tp 中的日历时间转换为协调世界时 (UTC) 如果无法获得 UTC, 则该函数返回 NULL 函数名字 gmtime 有一定的历史意义 struct tm *localtime(const time_t *tp) localtime 函数将结构 *tp 中的日历时间转换为当地时间 size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp) strftime 函数根据 fmt 中的格式把结构 *tp 中的日期与时间信息转换为指定的格式, 并存储到 s 中, 其中 fmt 类似于 printf 函数中的格式说明 普通字符 ( 包括终结符 \0 ) 将复制到 s 中 每个 %c 将按照下面描述的格式替换为与本地环境相适应的值 最多 smax 个字符写到 s 中 strftime 函数返回实际写到 s 中的字符数 ( 不包含字符 \0 ); 如果字符数多于 smax, 该函数将返回值 0 fmt 的转换说明及其含义如下所示 : %a 一星期中各天的缩写名 %A 一星期中各天的全名 %b 缩写的月份名 %B 月份的全名 %c 当地时间和日期表示 %d 一个月中的某一天 (0 31) %H 小时 (24 小时表示 )(00 23) %I 小时 (12 小时表示 )(00 12) %j 一年中的各天 ( ) %m 月份 (00 12) - 13 / 15-

14 %M 分钟 (00 59) %p 与 AM 与 PM 相对应的当地时间等价表示方法 %S 秒 (00 61) %U 一年中的星期序号 (00 53, 将星期日看作是每周的第一天 ) %w 一周中的各天 (0 6, 星期日为 0) %W 一年中的星期序号 (00 53, 将星期一看作是每周的第一天 ) %x 当地日期表示 %X 当地时间表示 %y 不带世纪数目的年份 (00 99) %y 带世纪数目的年份 %Z 时区名 ( 如果有的话 ) %% % 本身 B.11 与具体实现相关的限制 :<limits.h> 和 <folat.h> 头文件 <limits.h> 定义了一些表示整型大小的常量 以下所列的值是 NI LabWindows/CVI6.0 系统中使用的值 #define CHAR_BIT 8 char 类型的位数 #define UCHAR_MAX 0xff unsigned char 类型的最大值 #define USHRT_MAX 0xffff unsigned short 类型的最大值 #define UINT_MAX 0xffffffff unsigned int 类型的最大值 #define ULONG_MAX 0xffffffffL unsigned long 类型的最大值 #define CHAR_MAX SCHAR_MAX char 类型的最大值 #define SCHAR_MAX 0x7f signed char 类型的最大值 #define SHRT_MAX 0x7fff signed short 类型的最大值 #define INT_MAX 0x7fffffff signed int 类型的最大值 #define LONG_MAX 0x7fffffffL singed long 类型的最大值 #define CHAR_MIN SCHAR_MIN char 类型最小值 #define SCHAR_MIN (-SCHAR_MAX-1) singed char 类型最小值 #define SHRT_MIN (-SHRT_MAX-1) signed short 类型最小值 #define INT_MIN (-INT_MAX-1) int 类型最小值 #define LONG_MIN (-LONG_MAX-1) long 类型最小值 下表列出的名字是 <float.h> 的一个子集, 它们是与浮点算数运算相关的一些常量 以下所列的值是 NI LabWindows/CVI6.0 系统中使用的值 #define FLT_ROUNDS 1 加法的浮点舍入模式 #define FLT_RADIX 2 指数表示的基数, 例如 2 16 #define FLT_DIG 6 表示精度的十进制数字 #define FLT_EPSILON _FloatEps.val 最小的数 x,x 满足 1.0+x 1.0 #define FLT_MANT_DIG 24 尾数中的数 ( 以 FLT_RADIX 为基数 ) #define FLT_MAX _FloatMax.val 最大的浮点数 #define FLT_MAX_EXP 128 最大的数 n,n 满足 :FLT_RADIX'n-1 仍是可表示的 #define FLT_MIN _FloatMin.val 最小的规格化浮点数 #define FLT_MIN_EXP (-125) 最小的数 n,n 满足 :10 n 是一个规格化数 #define DBL_DIG 15 表示精度的十进制数 #define DBL_EPSILON _DoubleEps.val 最小的数 x,x 满足 1.0+x / 15-

15 #define DBL_MANT_DIG 53 #define DBL_MAX _DoubleMax.val #define DBL_MAX_10_EXP 308 #define DBL_MAX_EXP 1024 #define DBL_MIN _DoubleMin.val #define DBL_MIN_10_EXP (-307) #define DBL_MIN_EXP (-1021) #define LDBL_MANT_DIG #define LDBL_EPSILON #define LDBL_DIG #define LDBL_MIN_EXP #define LDBL_MIN #define LDBL_MIN_10_EXP #define LDBL_MAX_EXP #define LDBL_MAX #define LDBL_MAX_10_EXP DBL_MANT_DIG DBL_EPSILON DBL_DIG DBL_MIN_EXP DBL_MIN DBL_MIN_10_EXP DBL_MAX_EXP DBL_MAX DBL_MAX_10_EXP 结束 - 15 / 15-

附錄C.doc

附錄C.doc C C C-1 C -2 C -3 C -4 C -5 / C -6 2 C/C++ C-1 FILE* fopen(const char* filename, const char* mode) filename NULL FILE* freopen(const

More information

新・明解C言語入門編『索引』

新・明解C言語入門編『索引』 !... 75!=... 48 "... 234 " "... 9, 84, 240 #define... 118, 213 #include... 148 %... 23 %... 23, 24 %%... 23 %d... 4 %f... 29 %ld... 177 %lf... 31 %lu... 177 %o... 196 %p... 262 %s... 242, 244 %u... 177

More information

新・解きながら学ぶC言語

新・解きながら学ぶC言語 330!... 67!=... 42 "... 215 " "... 6, 77, 222 #define... 114, 194 #include... 145 %... 21 %... 21 %%... 21 %f... 26 %ld... 162 %lf... 26 %lu... 162 %o... 180 %p... 248 %s... 223, 224 %u... 162 %x... 180

More information

新版 明解C言語入門編

新版 明解C言語入門編 328, 4, 110, 189, 103, 11... 318. 274 6 ; 10 ; 5? 48 & & 228! 61!= 42 ^= 66 _ 82 /= 66 /* 3 / 19 ~ 164 OR 53 OR 164 = 66 ( ) 115 ( ) 31 ^ OR 164 [] 89, 241 [] 324 + + 4, 19, 241 + + 22 ++ 67 ++ 73 += 66

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

C/C++ - 文件IO

C/C++ - 文件IO C/C++ IO Table of contents 1. 2. 3. 4. 1 C ASCII ASCII ASCII 2 10000 00100111 00010000 31H, 30H, 30H, 30H, 30H 1, 0, 0, 0, 0 ASCII 3 4 5 UNIX ANSI C 5 FILE FILE 6 stdio.h typedef struct { int level ;

More information

C 标准库 C 标准库 输入与输出 <stdio.h> 字符类测试 <ctype.h> 字符串函数 <string.h> 数学函数 <math.h> 实用函数 <stdlib.h> 诊断 <assert.h>.

C 标准库 C 标准库 输入与输出 <stdio.h> 字符类测试 <ctype.h> 字符串函数 <string.h> 数学函数 <math.h> 实用函数 <stdlib.h> 诊断 <assert.h>. C 标准库 C 标准库...1 1 输入与输出 ... 1 2 字符类测试 ... 19 3 字符串函数 ... 22 4 数学函数 ... 29 5 实用函数 ... 35 6 诊断 ... 43 7 变长变元表 ... 44 8 非局部跳转 ...

More information

C

C C 14 2017 5 31 1. 2. 3. 4. 5. 2/101 C 1. ( ) 4/101 C C ASCII ASCII ASCII 5/101 C 10000 00100111 00010000 ASCII 10000 31H 30H 30H 30H 30H 1 0 0 0 0 0 ASCII 6/101 C 7/101 C ( ) ( ) 8/101 C UNIX ANSI C 9/101

More information

プログラムの設計と実現II

プログラムの設計と実現II UNIX C ls mkdir man http://www.tj.chiba-u.jp/lecture/prog2/ Ctrl+x, Ctrl+s ( )..[4]% gcc Wall o hoge hoge.c..[5]%./hoge 1 : 1 2 : 2 3 : 3 4 : 0 6..[6]% (! )..[4]% gcc Wall o hoge hoge.c..[5]%!g gcc Wall

More information

文件

文件 CH10 文件 1 文件的概念 一 文件分类 二 文件的组织结构 : ASCII 码文件 ( 文本文件 ) 二进制文件 文件是二进制代码的, 则文件就是字节流 文件是 ASCII 码的, 则文件就是字符流, 也是字节流 1 如 : 对于整型变量 x, 其值为 32767 若以文本方式存放, 则共有 5 个字符, 内容为 : 00110011 00110010 00110111 00110110 00110111

More information

untitled

untitled 串 串 例 : char ch= a ; char str[]= Hello ; 串 列 ch=getchar(); scanf( %c,&ch); 串 gets(str) scanf( %s,str); 8-1 數 ASCII 例 : char ch= A ; printf( %d,ch); // 65 A ascii =0x41 printf( %c,ch); // A 例 : char ch;

More information

C/C++语言 - C/C++数据

C/C++语言 - C/C++数据 C/C++ C/C++ Table of contents 1. 2. 3. 4. char 5. 1 C = 5 (F 32). 9 F C 2 1 // fal2cel. c: Convert Fah temperature to Cel temperature 2 # include < stdio.h> 3 int main ( void ) 4 { 5 float fah, cel ;

More information

第7章 数组

第7章  数组 第 12 章文件 内容 自定义类型 (typedef) 文件是什么?C 语言如何处理文件? 文本文件和二进制文件 打开 关闭文件 文件读写程序 其它相关函数 2 内容 自定义类型 (typedef) 文件是什么?C 语言如何处理文件? 文本文件和二进制文件 打开 关闭文件 文件读写程序 其它相关函数 3 自定义类型 (typedef) 自定义类型 (typedef) typedef < 已有类型名

More information

C/C++ - 函数

C/C++ - 函数 C/C++ Table of contents 1. 2. 3. & 4. 5. 1 2 3 # include # define SIZE 50 int main ( void ) { float list [ SIZE ]; readlist (list, SIZE ); sort (list, SIZE ); average (list, SIZE ); bargragh

More information

51685A.book

51685A.book 2008 Microchip Technology Inc. DS51685A_CN 请注意以下有关 Microchip 器件代码保护功能的要点 : Microchip 的产品均达到 Microchip 数据手册中所述的技术指标 Microchip 确信 : 在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一 目前, 仍存在着恶意 甚至是非法破坏代码保护功能的行为

More information

C/C++ - 字符串与字符串函数

C/C++ - 字符串与字符串函数 C/C++ Table of contents 1. 2. 3. 4. 1 char C 2 char greeting [50] = " How " " are " " you?"; char greeting [50] = " How are you?"; 3 printf ("\" Ready, go!\" exclaimed John."); " Ready, go!" exclaimed

More information

chap12.ppt

chap12.ppt 第十二章 文件 C ( 前所讲 ) 程序 ( 可包含若干源程序文件 ) 文件 也属于. 目的 : 使程序操作中的数据得以长期保存 一 概述 OS 以文件为单位对数据进行存储管理 流与文件流 :C 提供的一个 I/O 统一接口, 与具体的被访问设备无关 把 I/O 工作抽象成从源到目地的流, 所有的 I/O 通过流来进行, 所有流都具有相同的行为 文件 : 指具体的实际设备 ( 一切具有 I/O 能力的外部设备

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 第 13 章外存中数据的组织 文件 本章的基本内容是 : 概述 文件的打开与关闭 文件的读写操作 任务 13.1 统计入学成绩 ( 文件版 ) 问题 某大学的博士入学考试科目为外语和两门专业课, 对于每个考生, 输入各科考试成绩并计算总分 要求用文件实现 想法 已经录入的成绩信息应该用文件保存下来, 已经计算的总分也应该保存到文件中, 并已追加方式继续录入 算法 文件 student.txt 存放学生的成绩信息,

More information

_汪_文前新ok[3.1].doc

_汪_文前新ok[3.1].doc 普 通 高 校 本 科 计 算 机 专 业 特 色 教 材 精 选 四 川 大 学 计 算 机 学 院 国 家 示 范 性 软 件 学 院 精 品 课 程 基 金 青 年 基 金 资 助 项 目 C 语 言 程 序 设 计 (C99 版 ) 陈 良 银 游 洪 跃 李 旭 伟 主 编 李 志 蜀 唐 宁 九 李 涛 主 审 清 华 大 学 出 版 社 北 京 i 内 容 简 介 本 教 材 面 向

More information

<4D F736F F D20B5DA31D5C220C7B6C8EBCABDD3A6D3C3B3CCD0F2C9E8BCC6D7DBBACFBDCCB3CC2E646F63>

<4D F736F F D20B5DA31D5C220C7B6C8EBCABDD3A6D3C3B3CCD0F2C9E8BCC6D7DBBACFBDCCB3CC2E646F63> 嵌入式应用程序设计综合教程作者 : 华清远见 第 1 章 Linux 标准 I/O 编程 本章目标 在应用开发中经常要访问文件 Linux 下读写文件的方式有两大类 : 标准 I/O 和文件 I/O 其中标准 I/O 是最常用也是最基本的内容, 希望读者好好掌握 本章主要内容 : Linux 系统调用和用户编程接口 (API); Linux 标准 I/O 概述 ; 标准 I/O 操作 1.1 Linux

More information

ebook15-10

ebook15-10 1 0 10.1 U N I X V 7 4. 3 B S D S V R 3 P O S I X. 1 100 % 10.2 S I G S I G A B RT a b o r t S I G A L R M a l a r m V 7 1 5 S V R 4 4. 3 + B S D 31 < s i g n a l. h > 0 10. 9 k i l l 0 P O S I X. 1 D

More information

epub 33-8

epub 33-8 8 1) 2) 3) A S C I I 4 C I / O I / 8.1 8.1.1 1. ANSI C F I L E s t d i o. h typedef struct i n t _ f d ; i n t _ c l e f t ; i n t _ m o d e ; c h a r *_ n e x t ; char *_buff; /* /* /* /* /* 1 5 4 C FILE

More information

C 1

C 1 C homepage: xpzhangme 2018 5 30 C 1 C min(x, y) double C // min c # include # include double min ( double x, double y); int main ( int argc, char * argv []) { double x, y; if( argc!=

More information

Microsoft PowerPoint - 07_IO.ppt

Microsoft PowerPoint - 07_IO.ppt I/O 设备 C 程序设计语言 第 7 章 I/O 孙志岗 sun@hit.edu.cn http://sunner.cn 输入设备 键盘 鼠标 软盘 硬盘 光驱 ( 以文件的形式 ) 串行口 并行口 USB 接口 IEEE1394 口 网络端口 扫描仪 视频采集卡 电视卡 游戏杆 话筒 输出设备 显示器 打印机 软盘 硬盘 CD-RW/DVD RW/DVD-RW( ( 以文件的形式 ) 串行口 并行口

More information

《计算概论》课程 第十九讲 C 程序设计语言应用

《计算概论》课程 第十九讲  C 程序设计语言应用 计算概论 A 程序设计部分 字符数组与字符串 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 字符数组的定义 #include int main() char a[10] = 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' ; for (int i = 0; i < 10; i++) cout

More information

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023)

( CIP) /. :, ( ) ISBN TP CIP ( 2005) : : : : * : : 174 ( A ) : : ( 023) : ( 023) ( CIP) /. :, 2005. 2 ( ) ISBN 7-5624-3339-9.......... TP311. 1 CIP ( 2005) 011794 : : : : * : : 174 ( A ) :400030 : ( 023) 65102378 65105781 : ( 023) 65103686 65105565 : http: / /www. cqup. com. cn : fxk@cqup.

More information

Microsoft PowerPoint - 01_Introduction.ppt

Microsoft PowerPoint - 01_Introduction.ppt Hello, World C 程序设计语言 第 1 章章观其大略 孙志岗 sun@hit.edu.cn http://sunner.cn prf("hello,, world\n"); 超级无敌考考你 : 如何把 hello 和 world 分别打印在两行? 2004-12-19 A Tutorial Introduction 2 hello.c 打印华氏温度与摄氏温度对照表 计算公式 : C=(5/9)(

More information

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ1 - 参考答案 MASTER 2019 年 月 3 日 1 1 INPUTOUTPUT 1 InputOutput 题目描述 用 cin 输入你的姓名 ( 没有空格 ) 和年龄 ( 整数 ), 并用 cout 输出 输入输出符合以下范例 输入 master 999 输出 I am master, 999 years old. 注意 "," 后面有一个空格,"." 结束,

More information

第3章 类型、运算符与表达式

第3章 类型、运算符与表达式 Files C Programming Language Li Hanjing I/O 设备 输入设备 键盘 鼠标 软盘 硬盘 光驱 ( 以文件的形式 ) 串行口 并行口 USB 接口 IEEE1394 口 网络端口 扫描仪 视频采集卡 电视卡 游戏杆 话筒 输出设备 显示器 打印机 软盘 硬盘 CD-RW/DVD-RW( 以文件的形式 ) 串行口 并行口 USB 接口 IEEE1394 口 网络端口

More information

1 2005 9 2005,,,,,,,,,, ( http: \ \ www. ncre. cn,, ) 30,,,,,,,, C : C : : 19 : 100081 : : 7871092 1 /16 : 8. 75 : 96 : 2005 11 1 : 2005 11 1 : ISBN 7

1 2005 9 2005,,,,,,,,,, ( http: \ \ www. ncre. cn,, ) 30,,,,,,,, C : C : : 19 : 100081 : : 7871092 1 /16 : 8. 75 : 96 : 2005 11 1 : 2005 11 1 : ISBN 7 1 2005 9 2005,,,,,,,,,, ( http: \ \ www. ncre. cn,, ) 30,,,,,,,, C : C : : 19 : 100081 : : 7871092 1 /16 : 8. 75 : 96 : 2005 11 1 : 2005 11 1 : ISBN 7-80097 - 564-9 /TP 8 : 10. 00 ,,,, 1994 NCRE,,, ( ),,,,,

More information

Ps22Pdf

Ps22Pdf ( 98 ) C ( ) ( )158 1998 C : C C C,,, C,, : C ( ) : : (, 100084) : : : 7871092 1/ 16 :18 25 :415 : 2000 3 1 2000 3 1 : ISBN 7 302 01166 4/ T P432 : 00016000 : 22 00 ( 98 ) 20 90,,, ;,,, 1994, 1998, 160,

More information

Microsoft PowerPoint - w22

Microsoft PowerPoint - w22 文件与输入输出 8.2 文件的使用 北京大学数学科学学院 2010-6-7 文件的打开和关闭 FILE *fopen(const char *filename, const char *mode); 参数 :filename 是文件名 ;mode 指明文件打开方式 ; 功能 : 打开文件, 返回文件指针 ( 通过文件指针可进行各种文件操作 ); 如文件打开出错, 返回空指针值 ( 必须检查函数的返回值

More information

nooog

nooog C : : : , C C,,, C, C,, C ( ), ( ) C,,, ;,, ; C,,, ;, ;, ;, ;,,,, ;,,, ; : 1 9, 2 3, 4, 5, 6 10 11, 7 8, 12 13,,,,, 2008 1 1 (1 ) 1.1 (1 ) 1.1.1 ( ) 1.1.2 ( ) 1.1.3 ( ) 1.1.4 ( ) 1.1.5 ( ) 1.2 ( ) 1.2.1

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

没有幻灯片标题

没有幻灯片标题 位运算 C 语言既具有高级语言的特点, 又具有低级语言的功能 所谓位运算是指进行二进制位的运算 C 语言提供的位运算 : 说明 : 1 位运算符中除 ~ 以外, 均为二目 ( 元 ) 运算符, 即要求两侧各有一个运算量 2 运算量只能是整形或字符型的数据, 不能为实型数据 3 计算机中的数据是以补码的形式存储的, 因而进行位运算时, 是以补码进行运算 按位与 运算符 (&) 按位或 运算符 ( )

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

第十一章 文件和数据的导入与导出

第十一章  文件和数据的导入与导出 第十一章 文件和数据的导入与导出 本机数据文件存储与打开 数据导入与导出 低级 IO 文件 1 save 和 load 命令 save 保存工作区间的变量 ; load 调用外部变量和数据 >>a=1;b=2;c=3;d=[1,2;3,4]; >>save file1 a b c d % 将变量 a,b,c,d 保存在 file1.mat 文件中. >>save file2 a b % 将变量 a,b

More information

从问题到程序——文件及输入输出

从问题到程序——文件及输入输出 文件与输入输出 2011-06-01 文件概念 3 流和文件指针 C 语言中文件 IO 采用流概念 :IO 的对象是文件, 程序与文件交换信息需要与之建立联系 ( 流 ); 从文件输入时程序需要创建与文件关联的输入流 ; 程序向文件输出要创建输出流 ; 也可创建输入输出流 ; 建立联系 ( 创建流 ) 的操作称作打开文件, 文件打开后即可操作 ; 不再使用一个文件时可切断联系 ( 撤消对应的流 ),

More information

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3

Generated by Unregistered Batch DOC TO PDF Converter , please register! 浙江大学 C 程序设计及实验 试题卷 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:3 浙江大学 C 程序设计及实验 试题卷 2002-2003 学年春季学期考试时间 : 2003 年 6 月 20 日上午 8:30-10:30 注意 : 答题内容必须写在答题卷上, 写在本试题卷上无效 一. 单项选择题 ( 每题 1 分, 共 10 分 ) 1. 下列运算符中, 优先级最低的是 A.

More information

《C语言程序设计》第2版教材习题参考答案

《C语言程序设计》第2版教材习题参考答案 教材 C 语言程序设计 ( 第 2 版 ) 清华大学出版社, 黄保和, 江弋编著 2011 年 10 月第二版 ISBN:978-7-302-26972-4 售价 :35 元 答案版本 本习题答案为 2012 年 2 月修订版本 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p = &a A. *p = *a B. p = *a C.p = &a D. *p =

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

Chinese Translation of the C FAQ

Chinese Translation of the C FAQ C Steve Summit, 0.9.3, 2005 5 18 c 2005 C FAQ (2004 7 3 ) Steve Summit The English version of this FAQ list is Copyright 1990-2004 by Steve Summit. Content from the book C Programming FAQs: Frequently

More information

Ps22Pdf

Ps22Pdf C ( CIP) C /. :, 2001. 7 21 ISBN 7-5624 -2355-5. C........ C. TP312 CIP ( 2001 ) 034496 C * * : 7871092 1 /16 : 14. 25 : 356 20017 1 20017 1 : 1 6 000 ISBN 7-5624-2355-5 / TP311 : 21. 00 C, C,,,, C,, (

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 177 [P179] (1) - [P181] [P182] (2) - for [P183] (3) - switch [P184] [P187] [P189] [P194] 178 [ ]; : : int var; : int var[3]; var 2293620 var[0] var[1] 2293620

More information

C C

C C C C 2017 3 8 1. 2. 3. 4. char 5. 2/101 C 1. 3/101 C C = 5 (F 32). 9 F C 4/101 C 1 // fal2cel.c: Convert Fah temperature to Cel temperature 2 #include 3 int main(void) 4 { 5 float fah, cel; 6 printf("please

More information

C/C++ 语言 - 循环

C/C++ 语言 - 循环 C/C++ Table of contents 7. 1. 2. while 3. 4. 5. for 6. 8. (do while) 9. 10. (nested loop) 11. 12. 13. 1 // summing.c: # include int main ( void ) { long num ; long sum = 0L; int status ; printf

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

Microsoft PowerPoint - 20-string-s.pptx

Microsoft PowerPoint - 20-string-s.pptx String 1 String/ 1.: char s1[10]; char *s2; char s3[] = "Chan Tai Man"; char s4[20] = "Chan Siu Ming"; char s5[]={'h','e','l','l','o','\0'; 0 1 2 3 4 5 6 7 8 9 10 11 12 s3 C h a n T a i \0 M a n \0 printf

More information

实际问题 : 1 职工信息管理系统 2 学生选课系统 3 飞机订票系统 4 图书信息管理系统 5 图象处理

实际问题 : 1 职工信息管理系统 2 学生选课系统 3 飞机订票系统 4 图书信息管理系统 5 图象处理 实际问题 : 1 职工信息管理系统 2 学生选课系统 3 飞机订票系统 4 图书信息管理系统 5 图象处理 10.1 C 文件概述 文件 : 存储在外部介质上数据的集合, 是操作系统数据管理的单位使用数据文件的目的 文件分类 1 数据文件的改动不引起程序的改动 程序与数据分离 2 不同程序可以访问同一数据文件中的数据按文件的逻辑结构 : 数据共享 3 能长期保存程序运行的中间数据或结果数据 记录文件

More information

C/C++ - 结构体、共用体、枚举体

C/C++ - 结构体、共用体、枚举体 C/C++ Table of contents 1. 2. 3. 4. 5. 6. 7. 8. 1 C C (struct) C 2 C C (struct) C 2 i // book.c: # include < stdio.h> # define MAX_ TITLE 41 # define MAX_ AUTHOR 31 struct book { char title [ MAX_ TITLE

More information

Microsoft Word - chap13.doc

Microsoft Word - chap13.doc ï FILE dã Ä o rô qî ô Ö ƒù å o ô ÃÓ FILE Ã Ù Ö o v-> ª w ï FILE d wã +1 ~ c:\temp w Õx test.dat Ã Û vä à n ïw à test.dat 13-2a /* File name: ex13-2a.c */ #include char ch; fptr = fopen("c:\\temp\\test.dat",

More information

ebook15-C

ebook15-C C 1 1.1 l s ( 1 ) - i i 4. 14 - d $ l s -ldi /etc/. /etc/.. - i i 3077 drwxr-sr-x 7 bin 2048 Aug 5 20:12 /etc/./ 2 drwxr-xr-x 13 root 512 Aug 5 20:11 /etc/../ $ls -ldi /. /..... i 2 2 drwxr-xr-x 13 root

More information

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默

试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期  开放本科  期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默 试卷代号 :1253 座位号 E 口 国家开放大学 ( 中央广播电视大学 )2014 年秋季学期 " 开放本科 " 期末考试 C 语言程序设计 A 试题 2015 年 1 月 E 四! 五 总分! 一 单选题 ( 每小题 2 分, 共 20 分 ) 1. 由 C 语言源程序文件编译而成的目标文件的默认扩展名为 ( ) A. cpp B. c C. exe D. obj 2. 设 x 和 y 均为逻辑值,

More information

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP: ******************* * 关于 Java 测试试题 ******

エスポラージュ株式会社 住所 : 東京都江東区大島 東急ドエルアルス大島 HP:  ******************* * 关于 Java 测试试题 ****** ******************* * 关于 Java 测试试题 ******************* 問 1 运行下面的程序, 选出一个正确的运行结果 public class Sample { public static void main(string[] args) { int[] test = { 1, 2, 3, 4, 5 ; for(int i = 1 ; i System.out.print(test[i]);

More information

<4D F736F F D20B5DA33D5C220CAFDBEDDB5C4CAE4C8EBCAE4B3F62E646F63>

<4D F736F F D20B5DA33D5C220CAFDBEDDB5C4CAE4C8EBCAE4B3F62E646F63> 嵌入式 Linux C 语言程序 设计基础教程作者 : 华清远见 第 3 章数据的输入输出 本章目标 在上一章中, 读者了解了嵌入式 Linux C 语言的数据相关的知识, 包括数据类型 变量和常量等 本 章继续介绍 C 语言中与数据有关的知识, 数据的输入输出 通过本章的学习, 读者将会掌握如下内容 : 字符输出函数 putchar 格式化输出函数 printf 字符输入函数 getchar 格式化输入函数

More information

期中考试试题讲解

期中考试试题讲解 一 选择题 ( 一 ) 1. 结构化程序设计所规定的三种基本结构是 C A 主程序 子程序 函数 B 树形 网形 环形 C 顺序 选择 循环 D 输入 处理 输出 2. 下列关于 C 语言的叙述错误的是 A A 对大小写不敏感 B 不同类型的变量可以在一个表达式中 C main 函数可以写在程序文件的任何位置 D 同一个运算符号在不同的场合可以有不同的含义 3. 以下合法的实型常数是 C A.E4

More information

第一章三角函数 1.3 三角函数的诱导公式 A 组 ( ) 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角, 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C 2 ( 中诱导公式 ) ( ) B. cos(

第一章三角函数 1.3 三角函数的诱导公式 A 组 ( ) 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角, 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C 2 ( 中诱导公式 ) ( ) B. cos( 第一章三角函数 1. 三角函数的诱导公式 A 组 一 选择题 : 共 6 小题 1 ( 易诱导公式 ) 若 A B C 分别为 ABC 的内角 则下列关系中正确的是 A. sin( A B) sin C C. tan( A B) tan C ( 中诱导公式 ) B. cos( B C) cos A D. sin( B C) sin A sin60 cos( ) sin( 0 )cos( 70 ) 的值等于

More information

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1

C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 C++ 程序设计 告别 OJ2 - 参考答案 MASTER 2019 年 5 月 3 日 1 1 TEMPLATE 1 Template 描述 使用模板函数求最大值 使用如下 main 函数对程序进行测试 int main() { double a, b; cin >> a >> b; cout c >> d; cout

More information

[改訂新版]C言語による標準アルゴリズム事典

[改訂新版]C言語による標準アルゴリズム事典 iii C 1991 SEND + MORE = MONEY C 100 2003 Java 2003 27 PC-9800 C BMP SVG EPS BMPSVG WindowsMacLinux Web iv int main() int main(void) EXIT_SUCCESS 0 https://github.com/okumuralab/ algo-c TEX TEX PDF PDF

More information

C/C++程序设计 - 字符串与格式化输入/输出

C/C++程序设计 - 字符串与格式化输入/输出 C/C++ / Table of contents 1. 2. 3. 4. 1 i # include # include // density of human body : 1. 04 e3 kg / m ^3 # define DENSITY 1. 04 e3 int main ( void ) { float weight, volume ; int

More information

Microsoft Word - CPE考生使用手冊160524.docx

Microsoft Word - CPE考生使用手冊160524.docx 大 學 程 式 能 力 檢 定 (CPE) 考 生 使 用 手 冊 2016 年 5 月 24 日 這 份 手 冊 提 供 給 參 加 CPE 檢 定 考 試 的 考 生 內 容 包 含 考 試 環 境 的 使 用, 以 及 解 題 時 所 使 用 I/O 的 基 本 知 識 1. 如 欲 報 名 參 加 CPE 考 試, 請 先 於 CPE 網 站 完 成 帳 號 註 冊, 然 後 再 報 名 該

More information

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式]

Microsoft PowerPoint - 5. 指针Pointers.ppt [兼容模式] 指针 Pointers 变量指针与指针变量 Pointer of a variable 变量与内存 (Variables and Memory) 当你声明一个变量时, 计算机将给该变量一个内存, 可以存储变量的值 当你使用变量时, 计算机将做两步操作 : - 根据变量名查找其对应的地址 ; - 通过地址对该地址的变量内容进行读 (retrieve) 或写 (set) 变量的地址称为变量的指针! C++

More information

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式]

Microsoft PowerPoint - 3. 函数Functionl.ppt [兼容模式] 函数 Function 如何重用代码 How to reuse code 3 4 = 3*3*3*3 3 4,6 5 : 拷贝 - 粘帖代码 (Copy-paste code) 3 4,6 5,12 10 : 拷贝 - 粘帖代码 (Copy-paste code) Bad! 使用函数 (with a function) 使用函数 (with a function) 使用函数 (with a function)

More information

c_cpp

c_cpp C C++ C C++ C++ (object oriented) C C++.cpp C C++ C C++ : for (int i=0;i

More information

北京大学

北京大学 1 string 类 郭炜刘家瑛 北京大学程序设计实习 string 类 string 类是一个模板类, 它的定义如下 : typedef basic_string string; 使用 string 类要包含头文件 string 对象的初始化 : string s1("hello"); // 一个参数的构造函数 string s2(8, x ); // 两个参数的构造函数

More information

Linux 常用C函数(中文版)

Linux 常用C函数(中文版) Linux C function() 各位 Linux 爱好者 : 参考手册 你好! 本人有幸在坊间得到一名为 Linux C 函数参考 的文本文件, 并在此基础重新排版并制成 html 文件以方便广大爱好者阅读, 我感到无比的荣幸 在此多谢各位的鼎力支持, 以及日益完善此文件, 希望有朝一日能成为 Linux 编程爱好者必备的参考文件 在此再次多谢编写 Linux C 函数参考 的朋友 声明 :

More information

untitled

untitled A, 3+A printf( ABCDEF ) 3+ printf( ABCDEF ) 2.1 C++ main main main) * ( ) ( ) [ ].* ->* ()[] [][] ** *& char (f)(int); ( ) (f) (f) f (int) f int char f char f(int) (f) char (*f)(int); (*f) (int) (

More information

C, Win-TC Turbo C,, C, C,,,, C C, : Win-TC C, 23,,, 15,, C Turbo C Win-TC Turbo C,,,, 2005 1 W in -TC 1 Win-TC 1 1. Win-TC 1 2. Win-TC 1 3. Win-TC 1 2 Win-TC 3 1. 3 2. 3 3. 4 4. 4 5. 4 6. 4 7. 5 8. 5 9.

More information

Guava学习之CharSequenceReader

Guava学习之CharSequenceReader CharSequenceReader 类是以 CharSequence 的形式读取字符 CharSequenceReader 类继承自 Reader 类, 除了 remaining() hasremaining() 以及 checkopen() 函数之后, 其他的函数都是重写 Reader 类中的函数 CharSequenceReader 类声明没有用 public 关键字, 所以我们暂时还不能调用这个类

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 The BitCoin Scripting Language 交易实例 交易结构 "result": { "txid": "921a dd24", "hash": "921a dd24", "version": 1, "size": 226, "locktime": 0, "vin": [ ], "vout": [ ], "blockhash": "0000000000000000002c510d

More information

C

C C 2017 3 14 1. 2. 3. 4. 2/95 C 1. 3/95 C I 1 // talkback.c: 2 #include 3 #include 4 #define DENSITY 62.4 5 int main(void) 6 { 7 float weight, volume; 8 int size; 9 unsigned long letters;

More information

没有幻灯片标题

没有幻灯片标题 指针作为函数参数 : 原因 : 1 需要修改一个或多个值,( 用 return 语句不能解决问题 ) 2 执行效率的角度 使用方法 : 在函数原型以及函数首部中需要声明能够接受指针值的形参, 具体的写法为 : 数据类型 * 形参名 如果有多个指针型形参, 则用逗号分隔, 例如 : void swap(int *p1, int *p2) 它说明了形参 p1 p2 是指向整型变量的指针 在函数调用时,

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

PTR89 应用程序编程接口 V1.00

PTR89 应用程序编程接口 V1.00 PTR89 便携式热敏打印机 应用程序编程接口 V1.00 如有任何更改, 恕不另行通知 目录 1.0. 简介... 3 1.1. 文档范围和限制... 3 1.2. 参考... 3 2.0. 数据结构... 4 2.1. PRT_PAGE_MODE_PARAM... 4 3.0. API 函数... 5 3.1. Printer_Open... 5 3.2. Printer_Close... 5

More information

格式化字符串 Weifeng Sun School of Software, DLUT

格式化字符串 Weifeng Sun School of Software, DLUT 格式化字符串 Weifeng Sun School of Software, DLUT 格式化字符串漏洞 格式化字符串, 也是一种比较常见的漏洞类型 会触发该漏洞的函数很有限 主要就是 printf 还有 sprintf,fprintf 等等 c 库中 print 家族的函数 >int printf(const char* format,...) 2 / 42 3 / 42 A B 字符串指针 char

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc

Microsoft Word - 《C语言开发入门》课程教学大纲-2.doc C 语言开发入门 课程教学大纲 ( 课程英文名称 ) 课程编号 :201409210011 学分 :5 学分学时 :60 学时 ( 其中 : 讲课学时 :37 学时上机学时 :23 学时 ) 先修课程 : 计算机导论后续课程 :C++ 程序设计适用专业 : 信息及其计算机相关专业开课部门 : 计算机系 一 课程的性质与目标 C 语言开发入门 是计算机各专业必修的基础课程, 是数据结构 C++ Java

More information

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf ("%d", & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf ("%d %d

2013 C 1 # include <stdio.h> 2 int main ( void ) 3 { 4 int cases, a, b, i; 5 scanf (%d, & cases ); 6 for (i = 0;i < cases ;i ++) 7 { 8 scanf (%d %d 2013 18 ( ) 1. C pa.c, pb.c, 2. C++ pa.cpp, pb.cpp, Compilation Error cin scanf Time Limit Exceeded 1: A 5 B 5 C 5 D 5 E 5 F 5 1 2013 C 1 # include 2 int main ( void ) 3 { 4 int cases, a, b,

More information

PowerPoint Presentation

PowerPoint Presentation 程序设计 II 计算机学院黄章进 zhuang@ustc.edu.cn 课程内容 C 程序设计实践 C 语言回顾 简单程序设计 数制转换 日期和时间处理, 等 字符串处理 高精度计算 枚举 C++ 语言 从 C 到 C++ 类与对象 运算符重载与类型转换 继承与虚函数 编码规范 2 教材 李文新, 郭炜, 余华山. 程序设计导引及在线实践, 清华大学出版社, 2007 C99 参考书 : K. N.

More information

note.dvi

note.dvi 314 #include int x ; x = 0 ; if (x == 0) printf("if part\n") ; else printf("else part\n") ; if (x) printf("if part\n") ; else printf("else part\n") ; if (!x) printf("if part\n") ; else printf("else

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

网C试题(08上).doc

网C试题(08上).doc 学习中心 姓名 学号 西安电子科技大学网络与继续教育学院 高级语言程序设计 (C) 全真试题 ( 闭卷 90 分钟 ) 题号一二三总分 题分 60 20 20 得分 一 单项选择题 ( 每小题 3 分, 共 60 分 ) 1.C 语言程序的基本单位是 A) 程序行 B) 语句 C) 函数 D) 字符 2. 下列四组选项中, 均是不合法的用户标识符的选项是 A)A B)getc C)include D)while

More information

液晶之家论坛-

液晶之家论坛- 10 C Sep.22,1997 10 C [] 1997 6 3 page C Turbo C 2 C 4 10 13 21 32 40 46 55 1 C Turbo C C C / Turbo C Turbo C Turbo C PATH PATH=C:\TC;C:\DOS;... TC Turbo C PATH DOS TC Turbo C TC (Edit)(Compile)(Link)(Debug)

More information

WINAVR 中文教程

WINAVR 中文教程 WINAVR 中文教程 一 安装 WINAVR 是一款开发 AVR 系列单片机的免费编译软件 您可以在 网上搜索或者到 www.qm999.cn 中资源下载栏目中下载 安装完 WINAVR 的菜单 二 建立项目 运行 Programmers Notedpad [WinAVR] 1 建立项目组, 如下图 : 2 建立项目, 如下图 : 输入工程名 :first 放在目录 D:\tt 下 3 在新建的文件中输入第一个程序,

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 计算概论 A 课程程序设计部分 C++ 语言基本成分 数据成分 李戈 北京大学信息科学技术学院软件研究所 lige@sei.pku.edu.cn 再谈, 我们的进度安排 我们的学习过程 感性理性函数指针等 数据成分运算成分控制成分数组字符串 结构化的程序递归 传统学习过程 数据类型与表达式 输入输出 关系运算 控制语句 函数数组指针结构体 作业练习 感性认识作业练习 ( 以抄程序为主 ) 正常作业练习

More information

Microsoft PowerPoint - 08_陣列與函式.pptx

Microsoft PowerPoint - 08_陣列與函式.pptx 1 2 Outline 二維與多維陣列 Lecture 08 多維陣列函式 標準函式庫 函式簡介 一維陣列 二維陣列與多維陣列 陣列為多個同一型態變數之組合 int a[10]; 可存放 10 個整數資料的陣列, 可視為 10 個變數排成一個隊伍, 並給每一個變數一個編號, 自 0 號開始 至 9 號為止 a[0], a[1], a[2], a[],, a[9] 5 6 二維陣列的宣告 陣列為多個同一型態變數之組合

More information

第一部份

第一部份 电 子 商 务 再 造 桐 城 桐 城 市 电 子 商 务 发 展 战 略 规 划 建 议 报 告 书 编 制 时 间 : 第 一 稿 2015 年 9 月 12 日 编 制 单 位 : 桐 城 市 电 子 商 务 发 展 规 划 调 研 项 目 组 报 告 编 号 : 咨 询 文 2015 第 1 号, 共 3 份 1 目 录 前 言... 3 特 别 提 示 第 一 部 份 桐 城 市 基 本

More information

第1章 Delphi简介

第1章  Delphi简介 第 2 章 SQL 语言 函数基本操作 Oracle 11g PL/SQL 编程技术与开发实用教程 本章要点 (1) 掌握 Oracle 数字函数的使用方法 (2) 掌握 Oracle 字符函数的使用方法 (3) 掌握 Oracle 日期时间函数的使用方法 (4) 掌握 Oracle 转换函数的使用方法 学习目标 (1) 认识 SQL (2) 学习 Oracle 常用的数字函数及其功能 (3) 学习

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 pnzwzw@163.com C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 移动平台应用软件开发 课程建设小组北京大学二零一五年

移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 移动平台应用软件开发 课程建设小组北京大学二零一五年 移动平台应用软件开发 C/C++/JAVA 基础 C 中的预处理指令 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组北京大学二零一五年 预处理 2 预处理器 C 语言的编译系统分为编译预处理和正式编译 预处理作用 : 对源程序编译之前做一些处理, 生成扩展 C 源程序 预处理器的行为是由预处理指令控制的 宏定义 文件包含 条件编译 #define #ifdef

More information

untitled

untitled 不 料 料 例 : ( 料 ) 串 度 8 年 數 串 度 4 串 度 數 數 9- ( ) 利 數 struct { ; ; 數 struct 數 ; 9-2 數 利 數 C struct 數 ; C++ 數 ; struct 省略 9-3 例 ( 料 例 ) struct people{ char name[]; int age; char address[4]; char phone[]; int

More information

untitled

untitled Introduction to Programming ( 數 ) Lecture 3 Spring 2005 March 4, 2005 Lecture 2 Outline 數 料 If if 狀 if 2 (Standard Output, stdout): 料. ((Standard Input, stdin): 料. 類 數 數 數 說 printf 見 數 puts 串 數 putchar

More information

Introduction to Computer Systems /18-243, spring st Lecture, Jan. 12th

Introduction to Computer Systems /18-243, spring st Lecture, Jan. 12th 计算机组成原理习题课 1 授课老师 : 王浩宇 haoyuwang@bupt.edu.cn 1 练习 : 机器数的表示和相互转化 练习 1: 当十六进制数 9B 和 FF 分别表示为原码 补码 反码 移码和无符号数时, 所对应的十进制数各为多少 ( 设机器数采用一位符号位 )? 16 进制 真值 无符号数 原码 ( 真值 ) 反码 ( 真值 ) 补码 ( 真值 ) 移码 ( 真值 ) 9BH 二进制十进制

More information

C/C++ - 字符输入输出和字符确认

C/C++ - 字符输入输出和字符确认 C/C++ Table of contents 1. 2. getchar() putchar() 3. (Buffer) 4. 5. 6. 7. 8. 1 2 3 1 // pseudo code 2 read a character 3 while there is more input 4 increment character count 5 if a line has been read,

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ

download.kaoyan.com_2006ÄêÌì½ò¹¤Òµ´óѧ¸ß¼¶ÓïÑÔ³ÌÐòÉè¼Æ£¨409£©¿¼ÑÐÊÔÌâ 考生注意 : 本试卷共七大题, 满分 150 分 考试时间为 3 小时 ; 所有答案均写在答题纸上 ( 注明题号 ), 在此答题一律无效无效 一 选择题 ( 本题共 20 小题, 每小题 2 分, 满分 40 分 ) 1 char ch 1 2 A 0

More information

内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2

内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2 第 六 讲 指 针 与 字 符 串 1 内 容 提 要 指 针 持 久 动 态 内 存 分 配 字 符 串 ( 字 符 数 组 ) 2 指 针 什 么 是 指 针 指 针 的 定 义 与 运 算 指 针 与 一 维 数 组 指 针 数 组 行 指 针 与 二 维 数 组 指 针 与 引 用 指 针 与 函 数 3 指 针 定 义 什 么 是 指 针 指 针 变 量, 简 称 指 针, 用 来 存 放

More information