c语言open(path,0)中的0是什么意思啊
发布时间:2025-05-16 05:41:50 发布人:远客网络
一、c语言open(path,0)中的0是什么意思啊
1、取0,说明是以只读方式打开文件。
2、函数原型:int open(char* pathname, int access)
3、access是存取模式!用来指明如何访问这个文件,是只读?还是可写?或是既可读又可写?如果它和其它的位标志组合使用,就可以具有检查文件是否存在的功能。该参数的具体取值如下,当取0时,就是O_RDONLY,即以只读方式打开文件。
4、下列是参数access所能使用的标志位,在使用这些标志前,需要引用io.h和fcntl.h头文件:
5、上述三种标志位是互斥的,也就是不可同时使用,但可与下列的标志位利用|运算符组合。
6、O_CREAT若欲打开的文件不存在则自动建立该文件。
7、O_EXCL如果O_CREAT也被设置,此指令会去检查文件是否存在。文件若不存在则建立该文件,否则将导致打开文件错误。此外,若O_CREAT与O_EXCL同时设置,并且欲打开的文件为符号连接,则会打开文件失败。
8、O_NOCTTY如果欲打开的文件为终端机设备时,则不会将该终端机当成进程控制终端机。
9、O_TRUNC若文件存在并且以可写的方式打开时,此标志位会令文件长度清为0,而原来存于该文件的资料也会消失。
10、O_APPEND当读写文件时会从文件尾开始移动,也就是所写入的数据会以附加的方式加入到文件后面。
11、O_NONBLOCK以不可阻断的方式打开文件,也就是无论有无数据读取或等待,都会立即返回进程之中。
12、O_NOFOLLOW如果参数pathname所指的文件为一符号连接,则会令打开文件失败。
13、O_DIRECTORY如果参数pathname所指的文件并非为一目录,则会令打开文件失败。
二、open和fopen的区别
1. fopen系列是标准的C库函数;open系列是 POSIX定义的,是UNIX系统里的system call。
也就是说,fopen系列更具有可移植性;而open系列只能用在 POSIX的操作系统上。
2.使用fopen系列函数时要定义一个指代文件的对象,被称为“文件句柄”(file handler),是一个结构体;而open系列使用的是一个被称为“文件描述符”(file descriptor)的int型整数。
3. fopen系列是级别较高的I/O,读写时使用缓冲;而open系列相对低层,更接近操作系统,读写时没有缓冲。由于能更多地与操作系统打交道,open系列可以访问更改一些fopen系列无法访问的信息,如查看文件的读写权限。这些额外的功能通常因系统而异。
4.使用fopen系列函数需要"#include<sdtio.h>";使用open系列函数需要"#include<fcntl.h>",链接时要之用libc(-lc)
总的来说,为了使程序获得更好的可移植性,fopen系列是首选。
三、C语言头文件大全
1、C系统提供了丰富的系统文件,称为库文件,C的库文件分为两类,一类是扩展名为".h"的文件,称为头文件,在前面的包含命令中我们已多次使用过。在".h"文件中包含了常量定义、类型定义、宏定义、函数原型以及各种编译选择设置等信息。另一类是函数库,包括了各种函数的目标代码,供用户在程序中调用。通常在程序中调用一个库函数时,要在调用之前包含该函数原型所在的".h"文件。
2、下面给出Turbo C的全部".h"文件。
3、 ALLOC.H说明内存管理函数(分配、释放等)。
4、 ASSERT.H定义 assert调试宏。
5、 BIOS.H说明调用IBM—PC ROM BIOS子程序的各个函数。
6、 CONIO.H说明调用DOS控制台I/O子程序的各个函数。
7、 CTYPE.H包含有关字符分类及转换的名类信息(如 isalpha和toascii等)。
8、 DIR.H包含有关目录和路径的结构、宏定义和函数。
9、 DOS.H定义和说明MSDOS和8086调用的一些常量和函数。
10、 ERRON.H定义错误代码的助记符。
11、 FCNTL.H定义在与open库子程序连接时的符号常量。
12、 FLOAT.H包含有关浮点运算的一些参数和函数。
13、 GRAPHICS.H说明有关图形功能的各个函数,图形错误代码的常量定义,正对不同驱动程序的各种颜色值,及函数用到的一些特殊结构。
14、 IO.H包含低级I/O子程序的结构和说明。
15、 LIMIT.H包含各环境参数、编译时间限制、数的范围等信息。
16、 MATH.H说明数学运算函数,还定了 HUGE VAL宏,说明了matherr和matherr子程序用到的特殊结构。
17、 MEM.H说明一些内存操作函数(其中大多数也在STRING.H中说明)。
18、 PROCESS.H说明进程管理的各个函数,spawn…和EXEC…函数的结构说明。
19、 SETJMP.H定义longjmp和setjmp函数用到的jmp buf类型,说明这两个函数。
20、 SHARE.H定义文件共享函数的参数。
21、 SIGNAL.H定义SIG[ZZ(Z] [ZZ)]IGN和SIG[ZZ(Z] [ZZ)]DFL常量,说明rajse和signal两个函数。
22、 STDARG.H定义读函数参数表的宏。(如vprintf,vscarf函数)。
23、 STDDEF.H定义一些公共数据类型和宏。
24、 STDIO.H定义Kernighan和Ritchie在Unix System V中定义的标准和扩展的类型和宏。还定义标准I/O预定义流:stdin,stdout和stderr,说明 I/O流子程序。
25、 STDLIB.H说明一些常用的子程序:转换子程序、搜索/排序子程序等。
26、 STRING.H说明一些串操作和内存操作函数。
27、 SYS\STAT.H定义在打开和创建文件时用到的一些符号常量。
28、 SYS\TYPES.H说明ftime函数和timeb结构。
29、 SYS\TIME.H定义时间的类型time[ZZ(Z] [ZZ)]t。
30、 TIME.H定义时间转换子程序asctime、localtime和gmtime的结构,ctime、 difftime、 gmtime、 localtime和stime用到的类型,并提供这些函数的原型。
31、 VALUE.H定义一些重要常量,包括依赖于机器硬件的和为与Unix System V相兼容而说明的一些常量,包括浮点和双精度值的范围。