大一第一学期期末C语言程序设计笔记(六)

1、结构体类型定义:

struct     [结构体名]

{

      类型标识符    成员名;

      类型标识符    成员名;

         …………….

};

丶struct是关键字,不能省略。

丶结构体类型定义描述结构的组织形式,不分配内存

丶用无名结构体直接定义变量只能一次

丶可以将一个结构体变量赋值给另一个结构体变量

丶结构体嵌套时逐级引用

丶成员运算符(·)和指向结构体成员运算符(->)的区别

两者都是用来引用结构体变量的成员,但它们的应用环境是完全不一样,前者是用在一般结构体变量中,而后者是与指向结构体变量的指针连用,例如:有定义

 struct student

   {

   long num;

   float score;

   };

  struct student stud, *ptr=&stud;

 则stud.numstud.scoreptr->num等都是正确的引用方式,但ptr.numstud->num就是不允许的,其实ptr->num相当于(*ptr).num,只是为了更为直观而专门提供了这->运算符。

最后指出,这两者都具有最高优先级,按自左向右的方向结合。

 

2、指向结构体变量的指针

定义形式:struct  结构体名   *结构体指针名;例   struct  student  *p;

3、union   共用体名

{

      类型标识符    成员名;

      类型标识符    成员名;

         …………….

};

使几个不同类型的变量共占一段内存(相互覆盖)

类型定义不分配内存

共用体变量任何时刻只有一个成员存在

共用体变量定义分配内存,长度=最长成员所占字节数

共用体变量中起作用的成员是最后一次存放的成员

不能在定义共用体变量时初始化

可以用一个共用体变量为另一个变量赋值

4、

 

 

 

 

 

 

 

 

 

 

 

 

5、Typedef

说明:

1.typedef 没有创造新数据类型

2.typedef 是定义类型,不能定义变量

3.typedef 与 define 不同

define        typedef

预编译时处理   编译时处理

简单字符置换   为已有类型命名 

6、文件

文件分类

按文件的逻辑结构:

记录文件:由具有一定结构的记录组成(定长和不定长)

流式文件:由一个个字符(字节)数据顺序组成

按存储介质:

普通文件:存储介质文件(磁盘、磁带等)

设备文件:非存储介质(键盘、显示器、打印机等)

按数据的组织形式:

文本文件: ASCII文件,每个字节存放一个字符的ASCII码

(特点:存储量大、速度慢、便于对字符操作)

二进制文件:数据按其在内存中的存储形式原样存放

(特点:存储量小、速度快、便于存放中间结果)

7、文件处理方法

缓冲文件系统:高级文件系统,系统自动为正在使用的文件开辟内存缓冲区

非缓冲文件系统:低级文件系统,由用户在程序中为每个文件设定缓冲区

8、文件类型指针

文件结构体FILE

缓冲文件系统为每个正使用的文件在内存开辟文件信息区

文件信息用系统定义的名为FILE的结构体描述

FILE定义在stdio.h中

FILE   *fp;

 

 

 

 

9、系统自动打开和关闭三个标准文件:

标准输入------键盘          stdin

标准输出------显示器        stdout

标准出错输出-----显示器     stderr

10、文件打开fopen

函数原型: FILE    *fopen(char  *name,char *mode)

功能:按指定方式打开文件

返值:正常打开,为指向文件结构体的指针;打开失败,为NULL

例  FILE  *fp;

        fp= fopen (“c:\\test.txt”,”r”);   

例 文件打开与测试 

     FILE   *fp;

      fp=fopen(“aa.c”,“w”);

      if(fp==NULL)

     {     printf(“File open error!\n”);

            exit(1);

     }

例  FILE  *fp;

        char  *filename=“c:\\test.txt”

        fp= fopen(filename,”r”);   

11、文件关闭fclose

函数原型:int  fclose(FILE  *fp)

功能:关闭fp指向的文件

返值:正常关闭为0;出错时,非0

12、

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13、格式化I/O:fprintf与fscanf

函数原型:

int  fprintf(FILE  *fp,const char  *format[,argument,…])

int  fscanf(FILE  *fp,const char  *format[,address,…])

功能:按格式对文件进行I/O操作

返值:成功,返回I/O的个数;出错或文件尾,返回EOF

例  fprintf(fp,“%d,%6.2f”,i,t);     //将i和t按%d,%6.2f格式输出到fp文件

fscanf(fp,“%d,%f”,&i,&t);    //若文件中有3,4.5  ,则将3送入i, 4.5送入t

 

14、字符串I/O: fgets与fputs

函数原型:

char  *fgets(char  *s,int n,FILE  *fp)

  int   fputs(char  *s,FILE  *fp)

功能:从fp指向的文件读/写一个字符串

返值:fgets正常时返回读取字符串的首地址;出错或文件尾,返回NULL

  fputs正常时返回写入的最后一个字符;出错为EOF

fgets从fp所指文件读n-1个字符送入s指向的内存区,并在最后加一个‘\0’

(若读入n-1个字符前遇换行符或文件尾(EOF)即结束)

fputs把s指向的字符串写入fp指向的文件

 

15、rewind函数

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

功能:重置文件位置指针到文件开头

返值:无

fseek函数

函数原型:  int  fseek(FILE  *fp,long  offset,int whence)

功能:改变文件位置指针的位置

返值:成功,返回0;失败,返回非0值

ftell函数

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

功能:返回位置指针当前位置(用相对文件开头的位移量表示)

返值:成功,返回当前位置指针位置;失败,返回-1L,

ferror函数

函数原型:   int  ferror(FILE  *fp)

功能:测试文件是否出现错误

返值:未出错,0;出错,非0

  说明:每次调用文件输入输出函数,均产生一个新的ferror函数值,所以应及时测试

fopen打开文件时,ferror函数初值自动置为0

clearerr函数

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

功能:使文件错误标志置为0

返值:无

说明:出错后,错误标志一直保留,直到对同一文件调clearerr(fp)或rewind或任何其它一个输入输出函数

补充

1、正数的补码和原码相同

(56)10=00111000

   负数的补码

首先变成整数求原码

求得原码各位取反

取反后加1得补码

(-56)10=11001000

2、 int的取值范围  32bit

short的取值范围  16bit

long的取值范围 32bit

unsigned int的取值范围  32bit

unsigned short的取值范围  16bit

unsigned long的取值范围 32bit

float型  32bit  8bit指数位

double型  64bit  11bit指数位

3、值4.25在计算机中的存储:首先把4.25转换成二进制的表达方式,即100.01=1.0001x22

4、整数:

%d %md %-md %ld %mld %-mld

%o %mo %-mo %lo %mlo %-mlo

%x %mx %-mx %u %mu %-mu %lu %mlu %-mlu

5、实数:

%f %m.nf %-m.nf %e %m.ne %-m.ne %g

6、字符相关

%c %s %m.ns %-m.ns

 

 

Ok了,我的复习笔记基本就这些了。

posted @ 2014-01-18 16:22  微卑.  阅读(1290)  评论(1编辑  收藏  举报