当前位置:首页 » 编程语言 » c语言open头文件
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言open头文件

发布时间: 2022-06-12 15:19:29

A. c语言open()函数问题

O_TRUNC的意思是:如果文件存在,而且为只读或只写成功打开,就把文件长度截短为0。
明白了这段话,你就知道你错在哪了。

B. C语言中打开文件open函数和API中的打开文件CreateFile函数有什么区别联系

C语言的函数 可以和Turbo C的函数做同一个理解,
Turbo C 是在DOS环境下运行的,是一个8位的C语言环境,
WIN32 API 顾名思义 是在32位的环境下运行的,
如此 Turbo C显然不能调用WIN32的API

如果你是初学者,想学习C语言。
强烈建议你先用Turbo C处理书本上一些例题。
然后用VC学习API
用VC理由如下:
1、WIN32 API属于微软,当然要用微软公司开发的VC。
2、网络上铺天盖地的电子书、视频都是关于VC的。
3、企业基本都在用windows操作系统

至于什么DEV C;WINNER C; BOLAND C++建议根本不要碰——浪费时间……

最后 祝你好运!

C. C语言中open函数如何使用使用

C语言中open函数
作用:打开和创建文件。

简述:

1
2
3
4

#include<fcntl.h>
intopen(constchar*pathname,intflags);
intopen(constchar*pathname,intflags,mode_tmode);
返回值:成功则返回文件描述符,否则返回-1

对于open函数来说,第三个参数仅当创建新文件时(即 使用了O_CREAT 时)才使用,用于指定文件的访问权限位(access permission bits)。pathname 是待打开/创建文件的POSIX路径名(如/home/user/a.cpp);flags 用于指定文件的打开/创建模式,这个参数可由以下常量(定义于fcntl.h)通过逻辑位或逻辑构成。

1
2
3

O_RDONLY只读模式
O_WRONLY只写模式
O_RDWR读写模式

打开/创建文件时,至少得使用上述三个常量中的一个。以下常量是选用的:

1
2
3
4
5
6

O_APPEND每次写操作都写入文件的末尾
O_CREAT如果指定文件不存在,则创建这个文件
O_EXCL如果要创建的文件已存在,则返回-1,并且修改errno的值
O_TRUNC如果文件存在,并且以只写/读写方式打开,则清空文件全部内容(即将其长度截短为0)
O_NOCTTY如果路径名指向终端设备,不要把这个设备用作控制终端。
O_NONBLOCK如果路径名指向FIFO/块文件/字符文件,则把文件的打开和后继I/O

设置为非阻塞模式

1

(nonblockingmode)

以下三个常量同样是选用的,它们用于同步输入输出

1
2
3
4

O_DSYNC等待物理I/O结束后再write。在不影响读取新写入的数据的
前提下,不等待
文件属性
更新。

1
2

O_RSYNCread等待所有写入同一区域的写操作完成后再进行
O_SYNC等待物理I/O结束后再write,包括更新文件属性的I/O

open返回的文件描述符一定是最小的未被使用的描述符。

如果 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。

D. 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+” 读写打开一个二进制文件,允许读,或在文件末追加数据

E. 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 所指的文件并非为一目录,则会令打开文件失败。

F. c语言用fopen时,需要加特殊的 头文件吗

使用fopen时,只需将头文件#include<stdio.h>添加进源文件即可。


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

功 能:以mode指定的方式打开名为filename的文件

返 回 值:成功返回文件指针;否则,返回0


举例如下:

#include<stdio.h>//fopen所在的头文件
voidmain()
{
FILE*fp;//定义一个文件指针fp
fp=fopen("text1.txt","r");//以只读的方式打开文件名为text1.txt的文件
........
fclose(fp);//操作完毕后关闭文件
}

G. 跪求解决:C语言open函数想创建可写文件却创建成了只读文件

open改为

open("mytxt2,txt",O_RDWR | O_CREAT, S_IRWXU | S_IRWXG | S_IRWXO)

H. C语言头文件有哪些

STDLIB.H 说明一些常用的子程序:转换子程序、搜索/ 排序子程序等。
FCNTL.H 定义在与open库子程序连接时的符号常量。
IO.H 包含低级I/O子程序的结构和说明。
其它的如下:
ALLOC.H 说明内存管理函数(分配、释放等)。
ASSERT.H 定义 assert调试宏。
BIOS.H 说明调用IBM—PC ROM BIOS子程序的各个函数。
CONIO.H 说明调用DOS控制台I/O子程序的各个函数。
CTYPE.H 包含有关字符分类及转换的名类信息(如 isalpha和toascii等)。
DIR.H 包含有关目录和路径的结构、宏定义和函数。
DOS.H 定义和说明MSDOS和8086调用的一些常量和函数。
ERRON.H 定义错误代码的助记符。
FCNTL.H 定义在与open库子程序连接时的符号常量。
FLOAT.H 包含有关浮点运算的一些参数和函数。
GRAPHICS.H 说明有关图形功能的各个函数,图形错误代码的常量定义,正对不同驱动程序的各种颜色值,及函数用到的一些特殊结构。
IO.H 包含低级I/O子程序的结构和说明。
LIMIT.H 包含各环境参数、编译时间限制、数的范围等信息。
MATH.H 说明数学运算函数,还定了 HUGE VAL 宏, 说明了matherr和matherr子程序用到的特殊结构。
MEM.H 说明一些内存操作函数(其中大多数也在STRING.H 中说明)。
PROCESS.H 说明进程管理的各个函数,spawn…和EXEC …函数的结构说明。
SETJMP.H 定义longjmp和setjmp函数用到的jmp buf类型, 说明这两个函数。
SHARE.H 定义文件共享函数的参数。
SIGNAL.H 定义SIG[ZZ(Z] [ZZ)]IGN和SIG[ZZ(Z] [ZZ)]DFL常量,说明rajse和signal两个函数。
STDARG.H 定义读函数参数表的宏。(如vprintf,vscarf函数)。
STDDEF.H 定义一些公共数据类型和宏。
STDIO.H 定义Kernighan和Ritchie在Unix System V 中定义的标准和扩展的类型和宏。还定义标准I/O 预定义流:stdin,stdout和stderr,说明 I/O流子程序。

STRING.H 说明一些串操作和内存操作函数。
SYS\STAT.H 定义在打开和创建文件时用到的一些符号常量。
SYS\TYPES.H 说明ftime函数和timeb结构。
SYS\TIME.H 定义时间的类型time[ZZ(Z] [ZZ)]t。
TIME.H 定义时间转换子程序asctime、localtime和gmtime的结构,ctime、 difftime、 gmtime、 localtime和stime用到的类型,并提供这些函数的原型。
VALUE.H 定义一些重要常量, 包括依赖于机器硬件的和为与Unix System V相兼容而说明的一些常量,包括浮点和双精度值的范围。

I. C语言头文件ansidecl.h中定义的宏VA_OPEN和VA_FIXEDARG和VA_CLOSE表示什么

这个是用于处理可变参数的,其实C标准只定义了
va_start
,
va_end
,
va_
,
va_arg
这几个宏,而
va_list
是一个存储可变参数信息的对象。
va_start
用于初始化可变参数列表
va_
将参数列表拷贝一份,而不直接使用源参数列表,当然,这个拷贝参数列表中的参数信息和源列表是一样的。
var_arg
抽取参数列表中的下一个参数
var_end
用于结束参数处理(如果函数调用了va_start,在函数返回之前应该调用va_end结束本次处理)。
egg.
void
printInt(int
num,
...)
{

va_list
ap;//用于存储可变参数的信息的列表

var_start(ap,num);//初始化参数列表,你要告诉var_start,最后一个已命名的参数是哪一个(其实就是
...
前面的那个),这里就是num,因为va_start内部要找到可变参数的首地址,所以要知道从哪个地址开始是可变参数的地址,这里传递num,也就是从地址&num+1开始作为可变参数的地址。可变参数信息会存在ap这个list中
for(int
i=0;i<num;i++)
{

int
val=var_arg(ap,int);//使用va_arg宏从参数列表ap中取出一个参数,由于宏并不知道我们传递的参数的类型,所以它无法返回,所以你要告诉它参数是什么类型的,然后它就返回一个这种类型的参数值给你,参数列表内部维护一个指针,用于指示当前处理到哪个地址,调用va_arg后指针会移动到下一个参数的位置,那么它怎么知道下一个参数在哪里?你告诉它参数类型是什么,它就会向后移动这个参数类型所占的字节数,例如你从里面拿了一个int,那么它就+4,又从里面拿了一个char,它就+1。每次调用完va_arg后,指针都是指向下一个待处理的参数的地址。

printf("The
value
is:
%d
",val);
}
va_end(ap);//函数返回前,记得调用va_end这个宏来结束参数的处理,这个很重要,不要忘记。
}
printInt(3,24,36,71);//
调用printInt函数

J. 为什么会在C语言中出现: Cannot open include file: 'stdio .h': No such file or directory

在C语言中出现: Cannot open include file: 'stdio .h': No such file or directory是设置错误造成的,解决方法为:

1、输出编译器中进行编译。