(1)文件输入/输出:
- 程序与文件的通信方式:文件重定向
- C提供文件的两种视图:二进制视图,文本视图(映射,如:/r/n映射成/n)。
- FILE *ftp;
- fopen(“打开的文件名”, “文件指定的打开模式”)——————fclose(fp):关闭指针为fp的指定文件,同时根据需求刷新缓冲区,成功关闭,返 回0,否则返回EOF
- ch=getc(fp)和putc(ch,fout);
- fprintf(stdout,"Cant open \"words"\ file.\n");fprintf(fp,"%s",words);rewind(fp):回到文件的开始处;
- fgets(buf::一个char数组名称,MAX:字符串最大长度,fp:一个FILE指针);fputs(buf,fp);
- 随机存取:fseek("指向搜索文件的FILE指针,且这个文件时已经fopen了的打开文件", "offset偏移量:从起始点开始要移动的距离必须为long类型值", "模式:用来标识起始点:SEEK_SET:文件开始;SEEK_CUR:当前位置;SEEK_END:文件结尾") 正常,返回值为0,否则,返回-1 ftell():返回文件当前位置
(2)结构和其他数据形式:
- //建立结构声明
struct book{
char title[MAX];
char author[MAX];
float value;
};
int main(){
//定义结构变量
struct book library;
//访问结构成员
gets(library.title)
scanf("%s",&library.value);
……
}
- 枚举类型:enum
- typedef
typedef unsigned char BYTE;
BYTE x;
//初始化结构变量
struct book library={
"The pirate",
"Renee Vivotte",
1.95
} ;
(3)C预处理器和C库
- 编译器将文本划分为:预处理的语言符号序列,空白字符,注释序列。
- 明显常量:#define 所选择的缩略语(宏) 替换列表/主体
而使用const可以创建全局常量,局部常量,数字常量,数组常量,结构常量
- 类函数宏:如:#define SQUARE(X) X*X;
#x="x" ##x
- 宏的优点:不检查其中的变量类型
- 文件包含:#include,头文件内容常见形式
- 明显常量:stdio.h中的EOF,NULL等
- 宏函数:getchar,getc
- 函数声明:如string.h
- 结构模版定义FILE
- 类型定义
- 其他指令:
#undef:取消定义一个给定的#define;如:#define LIM 400; #undef LIM;
条件编译:
(1)#ifdef MAVIT
#include "horse.h"
#define STA 5
#else
#include "cow.h"
#define STA 15
#endif
(2)#ifndef
避免多次包含
(3)#if 和 #elif
#if SYS==1
#include "ibm.h"
#elif SYS==2
#include "vax.h"
#else
#include "mac.h"
#endif
(4)#line 和 #error
#line: 重置_ _LINE_ _和_ _FILE_ _宏报告的行号和文件名。
#line 1000 "cool.c"
#error
(5)#pragma c9x on
- 内联函数:inline
(3)qsort(数组头部指针, 需要排序项目的数量, 每个项目所占空间, int (*compair)(const void *,const *void *)):快速排序
- 诊断库:assert.h