本文目录一览:
c语言的open函数的哪个打开格式是在打开的文件后接着输入数据的?
这个网站的资料大部分是windows和linux通用的。
;c++/linux_c/default.htm
fopen(打开文件)
相关函数
open,fclose
表头文件
#include<stdio.h>
定义函数
FILE * fopen(const char * path,const char * mode);
函数说明
参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。
mode有下列几种形态字符串:
r
打开只读文件,该文件必须存在。r+
打开可读写的文件,该文件必须存在。w
打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+
打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a
以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。a+
以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 上述的形态字符串都可以再加一个b
字符,如rb
、w+b
或ab+
等组合,加入b
字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()
所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)
权限,此文件权限也会参考umask
值。 返回值 文件顺利打开后,指向该流的文件指针就会被返回。若果文件打开失败则返回NULL
,并把错误代码存在errno
中。 附加说明 一般而言,开文件后会作一些文件读取或写入的动作,若开文件失败,接下来的读写动作也无法顺利进行,所以在fopen()
后请作错误判断及处理。 范例
#include<stdio.h>
main()
{
FILE * fp;
fp=fopen("noexist","a+");
if(fp == NULL) return;
fclose(fp);
}
c语言如何注释?
直接在该行需要注释的地方加上//
即可。
可以使用/*
和*/
分隔符来标注一行内的注释,也可以标注多行的注释。例如,在下列的函数原型中,省略号的意思是 open()
函数有第三个参数,它是可选参数。
注释解释了这个可选参数的用法:
int open( const char *name, int mode, ... /* int permissions */ );
代码具有较好的可移植性 C语言是面向过程的编程语言,用户只需要关注所被解决问题的本身,而不需要花费过多的精力去了解相关硬件,且针对不同的硬件环境,在用C语言实现相同功能时的代码基本一致,不需或仅需进行少量改动便可完成移植,这就意味着,对于一台计算机编写的C程序可以在另一台计算机上轻松地运行,从而极大的减少了程序移植的工作强度。 以上内容参考:百度百科-C语言
open是什么意思啊
open
,作为英语单词解释为打开,开着等类似的意思。open
开放是指对某个地区开放或者形容某人思想前卫,open
在PB和C和linux C程序语言中指Open ( windowvar {, parent } )
。Linux C语言中open
函数,例如:read
、write
、fcntl
等。
形容词解释:
- a. 1. 打开的 2. 开阔的,空旷的[B] 3. 敞开的,开着的;无顶的 4. 悬而未决的,未定的 5. 营业的,办公的;出入自由的[F] 6. (工作、职位)空缺的[F] 7. 公开的,公然的,不隐晦的 8. 开放的,可以自由参加的[(+to)] 9. 【语】(元音、音节)开的 10. 愿意接受的;易招致...的[F][(+to)] 动词解释:
- vt. 1. 开;打开 (例:Please open your book) 2. 铺开,展开 3. 开始 4. 使开张(营业) 5. 使畅通
- vi. 1. 开;张开;展开 2. 开始 3. 开业 4. 展现 副词解释:
- n. 1. 户外,野外[the S] 2. 旷野,空地[the S] 3. 【体】公开赛 现在不仅是形容某个地区对外开放,提供优惠政策,现在也是形容人的个性开放,思想前卫,不因循守旧,不避讳令人敏感的问题。比如一个人的穿着很大胆,或者说的话写的文章用词大胆。
open在PB和C和linux C程序语言中
PB程序语言中open 功能:打开窗口。该函数有两种语法格式:
- 语法一、打开编程时已知数据类型的窗口对象;
- 语法二、打开程序运行后才能确定数据类型的窗口对象。 下面分别予以介绍:
语法一、打开编程时已知数据类型的窗口对象
语法
Open ( windowvar {, parent } )
参数
windowvar
:要打开窗口的窗口名,可以使用窗口画笔定义的窗口对象名,也可以使用该窗口对象的某个变量。Open()
函数把打开窗口的引用放置到windowvar
变量中。parent
:可选项,指定要打开窗口的父窗口,要打开窗口成为父窗口的子窗口,只有当要打开窗口需要成为某个窗口的子窗口时才需要指定该参数。如果应用程序使用Open()
函数打开某个子窗口或弹出窗口而又省略了该参数,那么当前活动窗口成为被打开窗口的父窗口。 返回值 函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL
,Open()
函数返回NULL
。
语法二、打开程序运行后才能确定数据类型的窗口对象
语法
Open ( windowvar, windowtype {, parent } )
参数
windowvar
:指定窗口变量名,Open()
函数把打开窗口的引用放置到该变量中。windowtype
:string
类型,指定要打开窗口的数据类型,该参数指定的窗口数据类型必须与windowvar
参数的类型相同或是windowvar
类型的后继对象。parent
:可选项,指定要打开窗口的父窗口,要打开窗口成为父窗口的子窗口,只有当要打开窗口需要成为某个窗口的子窗口时才需要指定该参数。如果应用程序使用Open()
函数打开某个子窗口或弹出窗口而又省略了该参数,那么当前活动窗口成为被打开窗口的父窗口。 返回值 函数执行成功时返回1,发生错误时返回-1。如果任何参数的值为NULL
,Open()
函数返回NULL
。
C语言中open函数
作用:打开和创建文件。 简述:
#include <fcntl.h>
int open(const char *pathname, int oflag, ... /* mode_t mode */);
返回值:成功则返回文件描述符,否则返回 -1。
对于open
函数来说,第三个参数(...
)仅当创建新文件时(即 使用了O_CREAT
时)才使用,用于指定文件的访问权限位(access permission bits)。
pathname
是待打开/创建文件的路径名(如C:/cpp/a.cpp
);oflag
用于指定文件的打开/创建模式,这个参数可由以下常量(定义于fcntl.h
)通过逻辑或构成。
打开/创建文件模式
O_RDONLY
只读模式O_WRONLY
只写模式O_RDWR
读写模式 打开/创建文件时,至少得使用上述三个常量中的一个。以下常量是选用的:O_APPEND
每次写操作都写入文件的末尾O_CREAT
如果指定文件不存在,则创建这个文件O_EXCL
如果要创建的文件已存在,则返回 -1,并且修改errno
的值O_TRUNC
如果文件存在,并且以只写/读写方式打开,则清空文件全部内容(即将其长度截短为0)O_NOCTTY
如果路径名指向终端设备,不要把这个设备用作控制终端。O_NONBLOCK
如果路径名指向 FIFO/块文件/字符文件,则把文件的打开和后继 I/O 设置为非阻塞模式 (nonblocking mode) 以下三个常量同样是选用的,它们用于同步输入输出:O_DSYNC
等待物理 I/O 结束后再 write。在不影响读取新写入的数据的前提下,不等待文件属性更新。O_RSYNC
read 等待所有写入同一区域的写操作完成后再进行O_SYNC
等待物理 I/O 结束后再 write,包括更新文件属性的 I/Oopen
返回的文件描述符一定是最小的未被使用的描述符。 如果NAME_MAX
(文件名最大长度,不包括\0
)是 14,而我们想在当前目录下创建文件名长度超过 14 字节的文件,早期的 System V 系统(如 SVR2)会截断超出部分,只保留前 14 个字节;而由 BSD 衍生的(BSD-derived)系统会返回错误信息,并且把errno
置为ENAMETOOLONG
。POSIX.1 引入常量_POSIX_NO_TRUNC
用于决定是否截断长文件名/长路径名。如果_POSIX_NO_TRUNC
设定为禁止截断,并且路径名长度超过PATH_MAX
(包括\0
),或者组成路径名的任意文件名长度超过NAME_MAX
,则返回错误信息,并且把errno
置为ENAMETOOLONG
。
Linux C语言中open函数相关函数
open
(打开文件)
相关函数:read
、write
、fcntl
、close
、link
、stat
、umask
、unlink
、fopen
头文件:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
定义函数:
int open( const char * pathname, int flags);
int open( const char * pathname, int flags, mode_t mode);
函数说明:
参数pathname
指向欲打开的文件路径字符串。下列是参数flags
所能使用的旗标:
O_RDONLY
以只读方式打开文件O_WRONLY
以只写方式打开文件O_RDWR
以可读写方式打开文件。 上述三种旗标是互斥的,也就是不可同时使用,但可与下列的旗标利用OR(|
)运算符组合。O_CREAT
若欲打开的文件不存在则自动建立该文件。O_EXCL
如果O_CREAT
也被设置,此指令会去检查文件是否存在。文件若不存在则建立该文件,否则将导致打开文件错误。此外,若O_CREAT
与O_EXCL
同时设置,并且欲打开的文件为符号连接,则会打开文件失败。O_NOCTTY
如果欲打开的文件为终端机设备时,则不会将该终端机当成进程控制终端机。O_TRUNC
若文件存在并且以可写的方式打开时,此旗标会令文件长度清为0,而原来存于该文件的数据也会消失。O_APPEND
当读写文件时会从文件尾开始移动,也就是所写入的数据会以附加的方式加入到文件后面。O_NONBLOCK
以不可阻断的方式打开文件,也就是无论有无数据读取或等待,都会立即返回进程之中。O_NDELAY
同O_NONBLOCK
。O_SYNC
以同步的方式打开文件。O_NOFOLLOW
如果参数pathname
所指的文件为一符号连接,则会令打开文件失败。O_DIRECTORY
如果参数pathname
所指的文件并非为一目录,则会令打开文件失败。 参数mode
组合 此为Linux2.2以后特有的旗标,以避免一些系统安全问题。参数mode
则有下列数种组合,只有在建立新文件时才会生效,此外真正建文件时的权限会受到umask
值所影响,因此该文件权限应该为(mode-umaks
)。S_IRWXU
00700 权限,代表该文件所有者具有可读、可写及可执行的权限。S_IRUSR
或S_IREAD
, 00400权限,代表该文件所有者具有可读取的权限。S_IWUSR
或S_IWRITE
,00200 权限,代表该文件所有者具有可写入的权限。S_IXUSR
或S_IEXEC
, 00100 权限,代表该文件所有者具有可执行的权限。S_IRWXG
00070权限,代表该文件用户组具有可读、可写及可执行的权限。S_IRGRP
00040 权限,代表该文件用户组具有可读的权限。S_IWGRP
00020权限,代表该文件用户组具有可写入的权限。S_IXGRP
00010 权限,代表该文件用户组具有可执行的权限。S_IRWXO
00007权限,代表其他用户具有可读、可写及可执行的权限。S_IROTH
00004 权限,代表其他用户具有可读的权限S_IWOTH
00002权限,代表其他用户具有可写入的权限。S_IXOTH
00001 权限,代表其他用户具有可执行的权限。 返回值: 若所有欲核查的权限都通过了检查则返回0 值,表示成功,只要有一个权限被禁止则返回-1。 错误代码:EEXIST
参数pathname
所指的文件已存在,却使用了O_CREAT
和O_EXCL
旗标。EACCESS
参数pathname
所指的文件不符合所要求测试的权限。EROFS
欲测试写入权限的文件存在于只读文件系统内。EFAULT
参数pathname
指针超出可存取内存空间。EINVAL
参数mode
不正确。ENAMETOOLONG
参数pathname
太长。ENOTDIR
参数pathname
不是目录。ENOMEM
核心内存不足。ELOOP
参数pathname
有过多符号连接问题。EIO
I/O 存取错误。 附加说明: 使用access()
作用户认证方面的判断要特别小心,例如在access()
后再作open()
空文件可能会造成系统安全上的问题。 范例:
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
main()
{
int fd,size;
char s [ ]="Linux Programmer!\n",buffer[80];
fd=open("/tmp/temp",O_WRONLY|O_CREAT);
write(fd,s,sizeof(s));
close(fd);
fd=open("/tmp/temp",O_RDONLY);
size=read(fd,buffer,sizeof(buffer));
close(fd);
printf("%s",buffer);
}
执行:
Linux Programmer
c语言open(path,0)中的0是什么意思啊?
取0,说明是以只读方式打开文件。 函数原型:
int open(char* pathname, int access)
access
是存取模式!用来指明如何访问这个文件,是只读?还是可写?或是既可读又可写?如果它和其它的位标志组合使用,就可以具有检查文件是否存在的功能。该参数的具体取值如下,当取0时,就是O_RDONLY
,即以只读方式打开文件。
下列是参数access
所能使用的标志位,在使用这些标志前,需要引用io.h
和fcntl.h
头文件:
O_RDONLY
以只读方式打开文件O_WRONLY
以只写方式打开文件O_RDWR
以可读写方式打开文件。 上述三种标志位是互斥的,也就是不可同时使用,但可与下列的标志位利用|
运算符组合。O_CREAT
若欲打开的文件不存在则自动建立该文件。O_EXCL
如果O_CREAT
也被设置,此指令会去检查文件是否存在。文件若不存在则建立该文件,否则将导致打开文件错误。此外,若O_CREAT
与O_EXCL
同时设置,并且欲打开的文件为符号连接,则会打开文件失败。O_NOCTTY
如果欲打开的文件为终端机设备时,则不会将该终端机当成进程控制终端机。O_TRUNC
若文件存在并且以可写的方式打开时,此标志位会令文件长度清为0,而原来存于该文件的数据也会消失。O_APPEND
当读写文件时会从文件尾开始移动,也就是所写入的数据会以附加的方式加入到文件后面。O_NONBLOCK
以不可阻断的方式打开文件,也就是无论有无数据读取或等待,都会立即返回进程之中。O_NDELAY
同O_NONBLOCK
。O_SYNC
以同步的方式打开文件。O_NOFOLLOW
如果参数pathname
所指的文件为一符号连接,则会令打开文件失败。O_DIRECTORY
如果参数pathname
所指的文件并非为一目录,则会令打开文件失败。
c 语言open()函数
windows下的文件操作,一般都用C语言的文件函数,其中文件打开函数fopen
fopen
函数用来打开一个文件,其调用的一般形式为:
文件指针名=fopen(文件名,使用文件方式)
其中,“文件指针名”必须是被说明为FILE
类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。例如:
FILE *fp;
fp=("file a","r");
其意义是在当前目录下打开文件file a
, 只允许进行“读”操作,并使fp
指向该文件。
又如:
FILE *fphzk
fphzk=("c:\\hzk16","rb")
其意义是打开C驱动器磁盘的根目录下的文件hzk16
, 这是一个二进制文件,只允许按二进制方式进行读操作。两个反斜线“\ ”中的第一个表示转义字符,第二个表示根目录。使用文件的方式共有12种,下面给出了它们的符号和意义。
文件使用方式 | 意 义 |
---|---|
“rt” | 只读打开一个文本文件,只允许读数据 |
“wt” | 只写打开或建立一个文本文件,只允许写数据 |
“at” | 希望在文件内追加内容,打开一个文本文件,并在文件末尾写数据 |
“rb” | 只读打开一个二进制文件,只允许读数据 |
“wb” | 只写打开或建立一个二进制文件,只允许写数据 |
“ab” | 追加打开一个二进制文件,并在文件末尾写数据 |
“rt+” | 读写打开一个文本文件,允许读和写 |
“wt+” | 读写打开或建立一个文本文件,允许读写 |
“at+” | 读写打开一个文本文件,允许读,或在文件末追加数据 |
“rb+” | 读写打开一个二进制文件,允许读和写 |
“wb+” | 读写打开或建立一个二进制文件,允许读和写 |
“ab+” | 读写打开一个二进制文件,允许读,或在文件末追加数据 |
C语言问题请教
这是声明一个函数指针
int
是函数的返回值类型
(*open)
是声明一个函数指针的语法,名叫open
(struct inode *,struct file*)
是函数的参数
int (*open) (struct inode *,struct file*)
的意思就是声明一个函数指针open
,这个函数指针可以指向返回值为int
,参数为struct inode *
、struct file*
的函数
可以用(*open)(参数1,参数2)
来执行这个函数指针指向的函数
这样做的好处是有多个相似的函数是,可以动态的指定调用哪一个函数来实现不同的功能