包含c语言_ext函数的词条( 七 )


并返回这个文件指针 , type可为以下字符串加上后缀
┌——┬————┬———————┬————————┐
│type│读写性 │文本/2进制文件│建新/打开旧文件 │
├——┼————┼———————┼————————┤
│r │读 │文本 │打开旧的文件 │
│w │写 │文本 │建新文件 │
│a │添加 │文本 │有就打开无则建新│
│r+ │读/写 │不限制 │打开 │
│w+ │读/写 │不限制 │建新文件 │
│a+ │读/添加 │不限制 │有就打开无则建新│
└——┴————┴———————┴————————┘
可加的后缀为t、b 。加b表示文件以二进制形式进行操作,t没必要使用
例: ┌——————————————————┐
│#includestdio.h │
│main() │
│{ │
│ FILE *fp; │
│ fp=fopen("C:\\WPS\\WPS.EXE","r+b");│
└——————————————————┘
FILE *fdopen(int ahndle,char *type)
FILE *freopen(char *filename,char *type,FILE *stream)
int getc(FILE *stream) 从流stream中读一个字符 , 并返回这个字符
int putc(int ch,FILE *stream) 向流stream写入一个字符ch
int getw(FILE *stream) 从流stream读入一个整数,错误返回EOF
int putw(int w,FILE *stream) 向流stream写入一个整数
int ungetc(char c,FILE *stream) 把字符c退回给流stream,下一次读进的字符将是c
int fgetc(FILE *stream) 从流stream处读一个字符,并返回这个字符
int fputc(int ch,FILE *stream) 将字符ch写入
C语言调用的自定义函数怎么不能引用我输入的数据?1、因为输入数据是局部变量 。需要使用全局变量或者传入函数参数 。
2、全局变量也称为外部变量,它是在函数外部定义的变量 。
它不属于哪一个函数,它属于一个源程序文件 。其作用域是整个源程序 。在函数中使用全局变量,一般应作全局变量说明 。
只有在函数内经过说明的全局变量才能使用 。全局变量的说明符为extern 。
但在一个函数之前定义的全局变量,在该函数内使用可不再加以说明 。外部变量是在函数外部定义的全局变量 , 它的作用域是从变量的定义处开始,到本程序文件的
结尾 。在此作用域内,全局变量可为各个函数所引用 。编译时将外部变量分配在静态存储区 。
有时需要在其他文件中使用extern来声明外部变量,以扩展外部变量的作用域 。
也可用static声明外部变量,使该变量不能被其他文件引用 。有时候他们是一样的,只有稍微一点的区别而已,不用太过于区分的 。
3、定义及引用方法:
#ifdef xxx_GLOBALS
#define xxx_EXT#else#define xxx_EXT extern
#endif 上面位于.H 文件中,每个全局变量都加上了xxx_EXT的前缀 , xxx代表模块的名字 。该模块的.C文件中有以下定义:#define xxx_GLOBALS
当编译器处理.C文件时,它强制xxx_EXT(在相应.H文件中可以找到)为空,(因为xxx_GLOBALS已经定义) 。所以编译器给每个全局变量分配内存空间 , 而当编译器处理其他.C文件时,xxx_GLOBAL没有定义,xxx_EXT被定义为extern,这样用户就可以调用外部全局变量 。进阶:在abc.H:#ifdef abc_GLOBALS
#define abc_EXT#else
#define abc_EXT extern#endif
abc_EXT unsigned int Ctr;
同时,abc.H有中以下定义:#define abc_GLOBALS
当编译器处理abc.C时,它使得头文件变成如下所示 , 因为abc_EXT被设置为空 。unsigned int Ctr;
这样编译器就会将这些全局变量分配在内存中 。当编译器处理其他.C文件时 , 头文件变成了如下的样子,因为abc_GLOBAL没有定义,所以abc_EXT被定义为extern 。extern unsigned int Ctr;

推荐阅读