admin 管理员组

文章数量: 887021


2023年12月16日发(作者:aspects评分临床应用)

C 语言程序设计

常量的概念

常量:在程序运行过程中,其值不能被转变的量称为常量,又称字面常量。例如:12,0,-3〔整型常量〕4.5,-1.3〔实型常量〕‘a’,‘b’,‘c’〔字符常量〕

变量的概念

变量:在程序运行过程中,其值能被转变的量称为变量,变量又称标识符。

C 语言变量的命名规章

C 语言规定标识符可以由字母、数字以及下划线组成,必需以字母或下划线开头。注:

1. 标识符区分字母的大小写。

2. 标识符不能为C 语言中的关键字。

3. 一般状况下标识符用小写字母表示。变量与常量的区分:

1. 从存储空间上区分

常量表示的是值,而变量是存放常量的存储空间。

2. 从访问权限上区分

变量的存储空间可供程序员访问修改,而常量的存储空间是不行访问修改的。

C 语言的关键字

auto break case char const

continue default do double else

enum extern float for goto

if int long register return

short singed sizeof static struct

switch typedef union unsigned void

volatile while

C 语言的注释

/*注释内容*/。表示“/*”开头,直到“*/”完毕均作为注释,可占多行。〔又称多行注释〕

根本数据类型

整型常量

十进制常量〔由 0~9 个数字组成〕。

八进制常量〔由 0~7 个数字组成,必需以 0 开头〕。

十六进制常量〔由 0~9 个数字和大小写A~F 组成。必需以 0x 开头〕。

整型类型

比特 字节

16 2

16 2

16 2

16 2

32 4

4

类型说明

有符号整型

无符号整型

有符号短整型

无符号短整型

有符号长整型

类型标识符

[signed] int

unsigned int

[signed] short [int]

unsigned short [int]

[signed] long [int]

32

无符号长整型

unsigned long [int]

注:

1.

2.

取值范围

-32768~+32767 即-2^15~(2^15-1)

0~+65535 即 0~(2^16-1)

-32768~+32767 即-2^15~(2^15-1)

0~+65535 即 0~(2^16-1)

-2147483648~+2147483647 即-

2^31~(2^31-1)

0~+4294967295 即 0~(2^32-1)

假设一个整型常量在-32768~+32767 范围内,则认为是[signed] int 型。

假设一个整型常量超出了-32768~+32767 范围,而在-2147483648~+2147483647 范围内,则认为是[signed] long [int]型。

3. 假设一个整型常量后面加一个字母u 或U,则认为是unsigned int。假设整型常量是负数则以补码形式存储。

4. 假设一个整型常量后面加一个字母l 或 L,则认为是[signed] long [int]。实型常量〔浮点型常量〕

小数形式:十进制小数形式:由数字和小数点组成〔必需有小数点〕。

指数形式:字母e 或E 之前必需是有效数字,且e 或E 之后必需是整型。指数的两种形式:

标准形式:即在字母e 或E 之前的小数局部中,小数点左边有且仅有一位非零数字。非标准形式:即在字母e 或E 之前的小数局部中,小数点左边有多位数字。

类型说明

单精度

双精度

长双精度注:

类型标识符

float

double

long double

比特

32

64

128

实型类型

字节 取值范围

4

10^-37~10^38(6 到 7 位有效数据)

8

10^-307~10^308(15 到 16 位有效数据)

16

10^-4931~10^4932(18 到 19 位有效数据)

1. 默认状况下一个实型常量以double 型存储。

2. 假设一个实型常量后面加一个字母f 或 F,则认为是 float 型。字符常量

C 语言字符常量用一对单引号括起来的一个且一个字符或转义字符。

C 语言的转移字符

含义

引用方法

‘b’

退格,将当前位置移到前一项

‘t’

水平制表

‘n’

换行,将当前位置移到下一行的开头‘r’

回车,将当前位置移到本行开头

‘”’

双引号字符‘’’

单引号字符

‘’

反斜杠字符“”

‘ddd’

1 到 3 位 8 进制所代表的字符

‘uxx’

1 到 2 位 16 进制所代表的字符

字符类型

取值范围

-128~+127、0~255 整型数值或ASCII

C 语言字符串常量是用一对双引号括起的0 个或多个字符串序列。字符串中可以包括转义字符。

注:

1. 空串:由 0 个字符组成的字符串称为空串。空串中不包含任何字符。其长度为0。

2. 空格串:由一个或多个空格组成的字符串称为空格串。

3. 不能将一个字符串常量赋于字符变量。

C 语言中的数据〔变量〕必需遵从先声明后使用的原则。

声明变量包括给出变量的名称和指明变量的数据类型,必要时可给指定变量初始值。变量的定义

定义一个变量:类型标识符

定义多个变量:类型标识符

变量名(标识符) 语句完毕符(分号)

变量名 1(标识符 1),变量 2(标识符 2)……语句完毕符号(分号)

类型说明

字符型

类型标识符

char

比特 字节

8 1

定义变量并初始化

定义一个变量并初始化:类型标识符 变量名(标识符)=值

定义多个变量并初始化:

类型标识符

号(分号);

注:定义多个变量必需把同一类型的放一个定义语句里,不必对全部变量都初始化。假设对变量定义并初始化,则必需在该程序中使用该变量。

表达式和语句的区分

有语句完毕符(分号)被称为语句;而表达式没有分号。只有语句才能被C 语言编译器所执行;而表达式不能。算术运算符

算术运算符号

+

*

%

强制类型转换

1. 隐蔽类型转换

(char 或 short 型)与 int 型运算,结果类型为int 型

(char、short 或 int 型)与 unsigned 型运算,结果类型为unsigned 型(char、short、int 或 unsigned 型)与 long 型运算,结果类型为long 型(short、int、unsigned 或 long 型)与 float 型运算,结果类型为float 型

(short、int、unsigned、long 或 float 型)与double 型运算,结果类型为double 型注:char 型与 float 或 double 型不存在隐蔽转换

2. 显示类型转换

(将要转换类型名)(被转换的表达式)

自增〔++〕、自减〔- -〕运算

++i,--i

i++,i--

赋值表达式

复合赋值表达式

+=

>>=

逗号表达式

(在使用i 之前,先使i 的值加(减)1)

(在使用i 之后,使i 的值加(减)1)

<变量><赋值运算符><表达式>

<变量><复合赋值运算符><表达式>

-=

<<=

复合运算符

*=

&=

/=

^=

%=

|=

变量=表达式说明

加运算符

乘运算符

求余数

算术运算符号

/

语句完毕符(分号);

变量名 1(标识符 1)=值,变量 2(标识符 2)=值,……,变量n(标识符n)=值语句完毕符说明

减运算符

除运算符

注:求余运算〔%〕只能运用于整型数据类型。注:自增、自减运算只能运用于整型数据类型。

表达式 1, 表达式 2,……表达式n

执行过程:先执行表达式 1,在执行表达式 2,直至表达式n。关系运算符

关系运算符号

<

>

= =

说明

小于

大于

等于

关系运算符

<=

>=

!=

说明

小于等于

大于等于

不等于

注:关系运算只有“真”和“假”值。在C 语言我们常用“1”表示真;用“0”表示假。

规律运算符

说明

规律运算符号

&&

规律与。一个为假则结果为假。

| |

规律或。一个为真则结果为真。

规律非。非假则为真。

规律运算真值表

A

位运算

运算符

&

^

条件表达式

b

!a

!b

a&&b

a| |b

含义

按位取反

右移

含义

按位与

按位异或

运算符

|

<<

含义

按位或

左移

运算符

~

>>

表达式 1?表达式 2:表达式 3

执行过程:假设表达式 1 的值为真,则执行表达式 2,此时表达式 2 就是整个表达式的值。假设表达式 1 的值为假,则执行表达式 3,此时表达式 3 就是整个表达式的值。

枚举类型

枚举的概念:是指将变量的值一一列举出来。

枚举的定义:enum

注:

1. 在C 语言中,对枚举中的元素按常量处理。

2. 默认状况下枚举类型的第一元素值为0,下一个元素值是上一个加 1。

3. 一个整数不能直接赋给一个枚举变量。

4. 枚举值可以用来做推断比较。位运算

位运算的概念:是指对二进制进展的运算。

位运算符

运算符

&

|

^

~

<<

>>

注:

位运算中出~按位取反以为,剩下均是二目运算符,即要求两侧各有一个运算量。运算量只能是整型或字符型的数据,不能为实型数据。

if 语句的三种形式

1. if(表达式) 语句

2. if(表达式) 语句 1 else 语句 2

含义

按位与。按位或。

按位异或是指对一个二进制指同值为假异值为真。

按位“取反”是指对一个二进制按位取反将0 变成 1,把 1 变成 0。

将一个数的各二进位全部左移假设干位。左移一位相当与原值乘以2,依次类推。将一个数的各二进位全部右移假设干位。左移一位相当与原值除以2,依次枚举名{常量 1,常量 2,……常量n}枚举变量名;

3. if(表达式 1)

else

else

……

else

else

语句 1

语句 2

语句 3

语句 m

if(表达式 2)

if(表达式 3)

if(表达式 m)

语句 n

注:全部 if 语句默认执行一行语句,假设要执行多行语句请用花括号括起。if 语句的嵌套两种形式

1. if(表达式)

if(表达式)

else

else

语句 2

语句 3

嵌套的if 语句

语句 1

语句 2

语句 1

嵌套的if 语句

if(表达式)

else 语句 4

2. if(表达式)

if(表达式)

else

if(表达式)

else

switch 语句

switch(表达式)

嵌套的if 语句

语句 3

注:else 总是与它上面最近的if 配对。

{

case

case

……

case

常量表达式 1:语句 1;break;

常量表达式 2:语句 2;break;

常量表达式n:语句n;break;

default:语句n+1

}

注:

1) switch 后的“表达式”必需是c 语言允许的类型(不允许是浮点数类型)。

2) 当 switch 后的“表达式”的值与某一个case 后面的常量表达式的值相等时,就执行此case

后面的语句,并且挨次执行当前相等后的全部case 和 default 语句直至switch 语句完毕。假设全部 case 中的常量表达式的值都不等于switch 后的“表达式”的值,就执行default 后面的语句。default 语句可以省略。

3) 当 switch 后的“表达式”的值与某一个case 后面的常量表达式的值相等时,就执行此case

后面的语句,假设case 后面的语句有break 语句,则跳出完毕switch 语句。假设case 后面的语句没有 break 语句,则挨次执行直至switch 语句完毕或与break 语句跳出。

4) 每一个case 的常量表达式的值必需互不一样,否则就会消灭相互冲突。

5) 各个 case 和 default 的消灭次序可以不同。

注:全部循环语句默认循环体为循环语句的下一条语句,假设循环多条语句请用花括号括起。

while 语句

while(表达式)

语句

while(表达式)

{ 循环体语句 }

说明:先推断表达式,假设表达式为假,则退出while 语句,否则后执行语句。再次推断表达式,

重复执行直至表达式的值为假时完毕while 循环。

do-while 语句

do

{

循环体语句

}while(表达式);

说明:

先执行一次循环体语句,在推断表达式,假设表达式为假,则退出do-while 语句,否则再次执行循环体语句,推断表达式,重复执行直至表达式的值为假时完毕do-while 循环。

for 语句

for(循环变量赋初值;循环条件;循环变量增值)

语句

for(表达式 1;表达式 2;表达式 3)

{ 循环体语句 }

说明:先求解表达式 1。在推断表达式 2。假设表达式 2 为假,则退出for 循环;假设表达式 2 为真, 则执行语句,在执行表达式 3,在推断表达式 2,重复执行直至表达式 2 的值为假时完毕for

循环。

break 语句

注:在循环语句中break 是完毕循环的意思,而在switch 语句中是完毕switch 语句的意思。

continue 语句:完毕本次循环,连续执行下一次循环。数组

数组是用一个标识符(变量名)和一组下标来代表一组具有一样数据类型的数据元素的结合。一维数组的定义

类型标识符

类型标识符

注:

1. 数组名后的常量表达式必需是整型或字符型常量;也可以是整型或字符型表达式。

2. 数组名与标识符定义规章一样。

3. 数组名是用方括号括起来的常量表达式,不行以用其它括弧。

4. 常量表达式表示的是数组的长度。

5. 常量表达式不能是变量。

6. 数组名是一个数组的起始地址,也是一个指针,但是不行上下移动。

7. 一维数组中表示值的在二维数组中表示地址,依次类推。数组的引用〔访问〕

下标法访问一维数组数组名[下标]

下标法访问二维数组数组名[下标][下标]

注:

1. C 语言的数组下标范围是从 0 到 n-1 的。假设超出则越界消灭错误数据。

2. 下标必需整型或整型表达式;也可以是字符型或字符型表达式〔但不行越界〕。一维数组的初始化

1. 在定义数组时对数组元素赋初值。

例如:int a[5]={0,1,2,3,4}; 其数组长度为 5

数组名[常量表达式];

数组名[常量表达式][常量表达式];

二维数组的定义

2. 可以给一局部元素赋初值〔其余元素自动为0〕。

例如:int a[5]={3};

例如:int a[5]={0};

例如:int a[]={0,1,2,3,4};

二维数组初始化

1. 分行给二维数组赋初值。

例如:int a[2][3]={{1,2,3},{4,5,6}};

2. 可以将全部数据写在一个花括弧内,按数组排列的挨次对各元素赋初值。例如:int a[2][3]={1,2,3,4,5,6};

其数组长度为 5,a[0]=3 其它数组元素自动为 0

其数组长度为 5,数组元素全为 0

其数组长度为 5

3. 将一个数组中全部元素赋初值 0。

4. 在对全部数组元素赋初值时,可以不指定数组长度。3. 可以对局部元素赋初值。

int a[2][3]={{1},{4}}; int a[2][3]={{1},{0,0,4}};

1 0 0 1 0 0

4 0 0 0 0 4

int a[2][3]={{0},{4}};

0 0 0

4 0 0

4. 假设对全部元素都赋初值〔即供给全部初始数据〕,则定义数组时对第一维的长度可以不指定,但其次维的长度不能省略。

int a[][3]={{0,3},{0},{4}};

int a[][3]={1,2,3,4,5,6,7,8,9};

1 2 3 0 3 0

4 5 6 0 0 0

7 8 9 4 0 0

函数

函数的概念:用来实现一个特定功能的模块。函数定义的一般形式

1.

无参函数的定义形式类型标识符

{

}

语句

函数名

声明定义局部2.

有参函数定义的一般形式

类型标识符

{

}

语句

函数名(形式参数列表)

统称函数体

函数名(参数类型 1 参数名 1,参数类型 2 参数 2 ,……)

声明定义局部〔函数返回值〕类型标识符

{

}

3.

“空”函数

声明定义局部语句

函数体为空的函数称为“空”函数。类型标识符

{

函数名

}

注:函数名前的类型标识符表示的是函数返回值的类型。

形式参数:库函数或用户自定义函数的函数名后面括弧中的变量被称为“形式参数”。

实际参数:在main函数中调用库函数或用户自定义函数时,函数名后面括弧中的参数被称为“实际参数”。

函数的返回值

函数的返回值语句:return(表达式); 或 return 表达式;

1. 假设函数返回值return 语句与函数类型不全都,则以函数类型为准。

2. 一个函数可有多个return 语句,但只有一个可以返回。(遇第一个return 语句函数完毕)

3. 一个函数假设有“函数返回值类型标识符”,不愿定要有return 语句。但有return 语句必需要有“函数返回值类型标识符”(假设 return 类型为整型,可以省略返回类型标识符)。

4. 一个函数假设“函数返回值类型标识符”为void 类型,表示为“无类型”,在函数体不能消灭函数返回值return 语句。

5. 默认状况下函数的返回值类型是整型。函数的调用一般形式

函数的调用方式

函数名(实参列表);

1. 函数语句:把函数作为调用语句。

2. 函数表达式:函数可消灭在表达式中。

3. 函数参数:函数可以作为本身或另一个函数的实际参数。

函数的调用过程:是将 main中函数调用中的实参的值一一对应的拷贝给库或用户自定义函数的形参,经过加工处理后将其必要的结果返回。

库函数

由系统编写好供用户重复使用的函数称为库函数。库函数只能被调用,不能更改函数体内容。函数嵌套

即在一个函数里可以调用其它库函数或用户自定义函数。递归函数

自己调用自己的函数称为递归函数。一个递归函数必需有一个完毕条件。即函数完毕条件,假设无则死循环。

作用域和变量的存储类型

作用域:是指程序中的某一局部,在这一局部中,该变量是有定义的,可以被C 编译和连接程序所识别。

局部变量:是指在函数以内定义的变量。

全局变量:是指在函数以外定义的变量。默认初始值为0。直至程序完毕才释放存储单元。静态局部变量 static:

永久占据内存,直至程序完毕才释放存储单元。即使函数完毕以后,在再次进入该函数时,静态局部变量仍使用上次函数完毕的结果值。默认初始值为0。

自动变量 auto:在函数中定义的变量假设没有指定存储类型则都是自动变量。

存放器变量 register:是指在变量前加上register 声明后,该变量将在存放器中执行,不在内存中执行。

预处理命令

宏定义

不带参数的宏定义

#define 标识符 字符串

说明:当程序中有与宏定义中的“标识符”或宏名匹配时,在用宏定义后在字符串替换。

1. 宏名一般习惯用大写字母表示,以便与变量区分。

2. 宏定义不是C 语言语句,不必在行末加分号。

3. 宏定义只作替换,不进展正确性检查,而且担忧排空间。

4. 可以引用宏定义再次定义宏。

5. 对程序中用双引括号括起来的字符串内的字符,即使与宏名一样,也不进展替换。

6. 宏定义不占运行时间,只占编译时间。带参数的宏定义

#define 宏名(参数表) 字符串

1. 对带参数的宏开放只是将语句中的宏名后面括号内的实参字符串代替#define 命令行的形参。

2. 在宏定义时,在宏名与带参数的括弧之间不应加空格,否则空格以后的全部字符都作为替换局部。即变成不带参数的宏定义。

文件包含处理:是指一个源文件可以将另一个源文件的全部内容包含进来。

#include “库文件名或用户自定义文件名” 或

#include <库文件名或用户自定义文件名>

1. 一个 include 的命令只能包含一个文件。假设需要n 个文件,则需n 个 include 的命令。

2. 一个被包含的文件可以包含另一个文件,但不行以相互包含。尖括号和双引号的区分:

当时用尖括号时,系统是在C 语言库函数头文件所在的名目查找相应的文件;而用双引号时,系统是在用户的当前名目中查找相应的文件。

条件编译

1. #ifdef

#else

标识符

程序段 1

程序段 2

#endif

说明:当指定的标识符已经被#define 命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2。其中#else 局部没有,即:

#ifdef 标识符

程序段 1

#endif

说明:当指定的标识符已经被#define 命令定义过,则在程序编译阶段只编译程序段1,否则不编译程序段1。

2. #ifndef 标识符

程序段 1

#else

程序段 2

#endif

说明:当指定的标识符未被#define 命令定义过,则在程序编译阶段只编译程序段1,否则编译程序段2。其中#else 局部没有,即:

#ifndef

#endif

说明:当指定的标识符未被#define 命令定义过,则在程序编译阶段只编译程序段1,否则不编译程序段1。

标识符程序段 1

3. #if

#else

表达式程序段 1

程序段 2

#endif

说明:当指定的表达式为真〔非零〕时就编译程序段1,否则编译程序段2。其中#else 局部没有,即:

#if

#endif

说明:当指定的表达式为真〔非零〕时就编译程序段1,否则不编译程序段1。指针

指针的概念:指向变量的地址。指针的定义

定义一个指针:类型标识符 *变量名(标识符) 语句完毕符(分号)

定义多个指针:类型标识符 *变量名 1,*变量 2……*变量 n 语句完毕符号(分号)

定义指针并初始化

定义一个指针并初始化:类型标识符 变量名(标识符)= 变量的地址 语句完毕符(分号)

定义多个指针并初始化:

类型标识符

(分号)

变量名 1(标识符 1)=变量的地址,变量 2(标识符 2)= 变量的地址,……语句完毕符号

表达式程序段 2

注:定义多个指针必需把同一类型的放一个定义语句里,不必对全部指针都初始化。

1. 一个指针不能指向一个常量,由于常量没有地址。

2. 指针的类型必需与所指向的变量的类型全都。

3. 可以消灭“无”类型指针,即void *p,表示该指针的类型不确定。

4. 指针变量可以有空值,即p=NULL,表示该指针不指向任何变量。

5. 数组名是一个数组的起始地址,也是一个指针,但是不行上下移动。

变量、数组、函数与指针的说明

定义

类型说明符 变量;

类型说明符 数组名[常量表达式]

类型说明符 *变量;

&变量

*变量

类型说明符 *数组名[常量表达式];

类型说明符 (*数组名)[常量表达式];

类型说明符 *函数名;

类型说明符 (*函数名);

类型说明符 **变量;

构造体

说明

定义一个变量定义一个数组定义个指针

变量的地址

指针所指向的值

定义一个指针数组,数组的每一个成员都一个指针定义一个指向一维数组的指针

定义一个返回类型为指针的函数定义一个指向函数的指针

定义一个指向指针的指针

构造体概念:是将假设干个不同类型的数据组织成一个整体的集合。

1. 先声明在定义构造体变量的一般形式

struct

{

构造体名

成员列表; };

构造体类型名 构造体变量〔指针或数组〕;

2. 声明、定义构造体变量的一般形式

struct

{

构造体名

成员列表; }构造体变量〔指针或数组〕列表;

构造体类型名 构造体变量〔指针或数组〕;

3. 直接声明、定义构造类型变量

struct

{

注:

1. 不能对构造体成员初始化,不能对构造体变量整体赋值或整体输入输出。

2. 构造体可以嵌套定义;也可以嵌套共用体。

3. 假设使用方法 3 定义构造体,则全部将要使用的构造体变量〔指针或数组〕必需在声明时全部定义,以后不行在定义构造体变量。〔建议不要使用方法3〕

构造体变量所占用的存储空间

构造体变量所占用的存储空间大小取决于全部构造体成员所占空间之和。定义一个构造体变量:构造体类型名 变量;

定义多个构造体变量:构造体类型名变量 1,变量 2,….. 变量n;

定义一个构造体指针变量:构造体类型名 *变量;

定义多个构造体指针变量:构造体类型名*变量 1,*变量 2,….. *变量 n;

构造体变量访问构造体成员:构造体变量名.成员名

构造体指针访问构造体成员:构造体指针名->成员名 或(*构造体指针名).成员名共用体

共用体概念:是将假设干个不同类型的变量组织成一个共同使用同一存储空间的结合。

1. 先声明在定义共用体变量的一般形式

union 共用体名

{ 成员列表; };

共用体类型名 共用体变量〔指针或数组〕;

2. 声明、定义共用体变量的一般形式

union 共用体名

{ 成员列表; }共用体变量〔指针或数组〕列表;

共用体类型名 共用体变量〔指针或数组〕;

3. 直接声明、定义共用体变量

union

{

注:

1. 同一个内存段在每一瞬间只能存放其中一种数据类型,不能同时存放多个。

2. 共用体变量的类型是最终一次存放的数据成员的类型。

3. 不能对共用体变量名赋值,不能对共用体成员初始化。

4. 共用体的全部成员使用同一地址。

5. 不能把共用体变量作为函数的参数,不能返回一个共用体变量,可用指针指向共用体变量

6. 共用体可以消灭在构造体中,也可以嵌套定义共用体。

成员列表; }共用体变量〔指针或数组〕列表;

成员列表; }构造体变量〔指针或数组〕列表;

7. 假设使用方法 3 定义共用体,则全部将要使用的共用体变量〔指针或数组〕必需在声明时全部定义,以后不行在定义共用体变量。〔建议不要使用方法3〕

共用体变量所占用的存储空间

共用体变量所占用存储空间的大小取决于共用体成员所占的最大存储空间。定义一个共用体变量:共用体名 变量;

定义多个共用体变量:共用体名变量 1,变量 2,….. 变量n;

定义一个共用体指针变量:共用体名 *变量;

定义多个共用体指针变量:共用体名*变量 1,*变量 2,….. *变量 n;

共用体变量访问共用体成员:共用体变量名.成员名

共用体指针访问共用体成员:共用体指针名->成员名重定义系统类型说明符

其一般形式为

typedef 已有类型说明符

文件分为:ASCII 文件和二进制文件。

ASCII 文件:是用假设干个字符组成的文本文件,每一个字符都必需ASCII 所规定的。二进制文件:是指把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。文件的翻开(fopen 函数)

函数的调用形式: FILE *fp;

fp=fopen(文件名,翻开方式);

翻开方式

翻开方式

“r”〔只读〕

“w” 〔只写〕

“a”〔追加〕

“rb” 〔只读〕

“wb” 〔只写〕

“ab”〔追加〕

“r+”〔读写〕

“w+” 〔读写〕

“a+” 〔读写〕

“rb+” 〔读写〕

“wb+” 〔读写〕

“ab+” 〔读写〕

文件的关闭(fclose 函数)

函数的调用形式:fclose(文件指针);

注:文件翻开函数与文件关闭函数应成对消灭。文件的读写函数

1. fputc 函数

函数的调用形式:fputc(ch,fp);

函数功能:是将字符(ch 的值)输出到fp 所指向的文件中去。fputc 函数也带回一个返回值:假设输出成功则返回值就是输出的字符;假设输出失败,则返回一个EOF(-1)。EOF是在 stdio.h

文件中定义的符号常量,值为-1。

注:其中ch 的值可以是一个字符常量或字符变量。

含义

为输入翻开一个文本文件为输出翻开一个文本文件向文本文件尾追加数据

为输入翻开一个二进制文件为输出翻开一个二进制文件向二进制文件尾追加数据

为读/写翻开一个文本文件

为读/写建立一个文本文件为读/写翻开一个文本文件 为读/写翻开一个二进制文件

为读/写建立一个二进制文件

为读/写翻开一个二进制文件

自定义类型说明符; 文

2. fgetc 函数

函数的调用形式:ch=fgetc(fp);

函数功能:fp 为文件指针变量,ch 为字符变量。fgetc 函数带回一个字符,赋给ch。假设在执行fgetc 函数读字符时遇到文件完毕符,函数返回一个文件完毕标志EOF(-1) 。

注:使用 fgetc 函数文件必需以读或读写方式翻开。

3. fread 函数和 fwrite 函数

函数的调用形式:

函数参数说明:

butter:是一个指针。对fread 来说,它是读入数据的存放地址。对fwrite 来说,是要输入数据的地址(以上所指的都是起始地址)。

size:要读写的字节数。 count:要进展读写多少个size 字节的数据项。fp:文件指针。

4. fprintf 函数和 fscanf 函数

函数的调用形式: fprintf(文件指针,格式字符串,输出表列);

fscanf(文件指针,格式字符串,输出表列);

函数功能:fprintf 函数是将任意类型变量或常量依据确定的输出格式(写)到 fp 所指向的文件。fscanf 函数是依据确定的输入格式从fp 所指向的文件中(读)字符串。

注:使用 fprintf 函数和fscanf 函数时,输入和输出格式必需全都,否则出错。其他读写函数

1. putw 函数

函数原型: int putw(int w,FILE *fp);

函数功能:将一个整数w(即一个字)写到fp 所指向的文件中。假设成功,返回输出的整数;假设出错,返回EOF。

注:putw 函数为非ANSI 标准函数。

2. getw 函数

函数原型: int getw(FILE *fp);

函数功能:从 fp 所指向的文件中读取一个字(整数)。假设文件完毕或出错,函数返回-1。注:putw 函数为非ANSI 标准函数。

3. fgets 函数

函数原型: char *fgets(char *buf,int n,FILE *fp);

函数功能:从 fp 所指向的文件读取一个长度为(n-1)的字符串,存入起始地址为 buf 的存储空间。假设遇文件完毕或出错,函数返回NULL。

4. fputs 函数

函数原型: int fputs(char *str,FILE *fp);

函数功能:将 str 所指向的字符串输出(写)到 fp 所指向的文件中。假设成功,函数返回0 值;假设出错,函数返回非 0 值。

文件定位函数

1. rewind 函数

函数原型: void rewind(FILE *fp);

函数功能:将 fp 所指向的文件中的位置指针重返回文件的开头。此函数没有返回值。

fread(buffer,size,count,fp);

fwrite(buffer,size,count,fp);

2. fseek 函数

函数的调用形式:

函数参数说明:

fseek(文件类型指针,位移量,起始点);

起始点表

起始点 名字 用数字代表

SEEK_SET 0

文件开头

SEEK_CUR 1

文件当前位置

SEEK_END

2

文件末尾

位移量:“位移量”是以“起始点”为基点,向前移动的字节数。ANSI C 和大多数C 版本要求位移量是long 型数据。ANSI C 标准规定在数字末尾加一个字母L,表示是 long 型。

3. ftell 函数

函数原型: long ftell(FILE *fp);

函数功能:返回fp 所指向的文件中的读写位置。假设ftell 函数返回值为-1L,表示出错。推断文件状态函数

1. feof 函数

函数原型: int feof(FILE *fp);

函数功能:检查文件是否完毕。假设文件完毕,feof 函数返回非 0 值;否则返回 0 值。

2. ferror 函数

函数原型:

0 值。

3. clearerr 函数

函数原型: void clearerr(FILE *fp);

函数功能:使错误标志和文件完毕标志置为0〔去除文件指针错误〕。该函数无返回值。

int ferror(FILE *stream);

函数功能:检查文件操作是否错误。假设文件操作成功,函数返回0〔假〕,否则,函数返回非

C 语言运算符的优先级与结合性

优先级 运算符

1 []

.

->

2

*

++

--

!

~

(类型)

&

sizeof

-

*

/

%

4

3

含义

数组下标运算符

圆括号

构造体成员运算符

指向构造体成员运算符指针运算符

自增运算符

自减运算符

规律非运算符

按位取反运算符强制类型转换

长度运算符

负号运算符

乘法运算符除法运算符

求余运算符

加法运算符

减法运算符

右移运算符

左移运算符

小于运算符

小于等于运算符

要求运算对象的个数 结合方向

自左向右

(单目运算) 自右向左

(双目运算) 自左向右

5

6

+

-

>>

<<

<

<=

>

>=

(双目运算)

自左向右

自左向右

(双目运算)

(双目运算)

自左向右

7

8

9

10

11

12

13

14

15

= =

!=

&

^

|

&&

||

= *= /=

%= += -=

<<= >>=

>>>= &=

^= !=

,

大于运算符

大于等于运算符

等于运算符

不等于运算符

按位与运算符

按位异或运算符

按位或运算符

规律与运算符

规律或运算符

条件运算符

复合赋值运算符

(双目运算)

自左向右

自左向右

自左向右

自左向右

自左向右

自左向右

自右向左

自右向左

(双目运算)

(双目运算)

(双目运算)

(双目运算)

(双目运算)

(三目运算)

(双目运算)

逗号运算符

(挨次求值运算符)

自左向右


本文标签: 函数 变量 文件