c语言fopen函数

C\\C++中 fopen中文件打开方式的区别:

試著忘記壹切 提交于 2020-03-18 08:15:53
在C语言中,大家常用到fopen打开文件,准备进行写操作,再用fwrite把数据写入文件,最后用fclose关闭文件。 如以下C代码: #include <stdio.h> char buf[10] = {10,10,10,10,10,10,10,10,10,10}; FILE *fp = fopen("c:\\test.dat","w"); fwrite(buf,1,10,fp); fclose(fp); FILE *fp1 = fopen("c:\\test1.dat","wb"); fwrite(buf,1,10,fp); fclose(fp1); 我们注意到,程序的第一段定义一个数组,每个分量的值为:10,等价的十六进制为0A。 第二段,先是打开一个文件test.dat进行写操作,再是把10个数据写入文件,最后关闭文件。 第三段,功能差不多,只是文件名换成了test1.dat,打开文件的模式换成了wb. 第二段和第三段有什么区别呢?我们看一下最后的文件内容: test.dat: 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A test1.dat: 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 原因是为什么呢?这就是w 和 wb的区别,w是以文本方式打开文件,wb是二进制方式打开文件

error C4996: 'fopen': This function or variable may be unsafe.

浪子不回头ぞ 提交于 2020-03-02 06:08:31
vs2013中错误提示信息: error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>f:\program files (x86)\microsoft visual studio 12.0\vc\include\stdio.h(211) : 参见“fopen”的声明 原因:在demo中我使用了C语言库函数,具体参见: CRT函数的安全增强版本 解决办法: 更改预处理定义,屏蔽该错误: 设置项目->属性->配置属性->C/C++ -> 预处理器 -> 预处理器定义,添加:_CRT_SECURE_NO_WARNINGS。下图是修改后的 来源: https://www.cnblogs.com/medicinebl/p/6170922.html

C语言文件操作详解

限于喜欢 提交于 2020-03-02 04:13:23
C语言文件操作详解 C语言中没有输入输出语句,所有的输入输出功能都用 ANSI C提供的一组标准库函数来实现。文件操作标准库函数有:       文件的打开操作 fopen 打开一个文件       文件的关闭操作 fclose 关闭一个文件       文件的读写操作 fgetc 从文件中读取一个字符               fputc 写一个字符到文件中去               fgets 从文件中读取一个字符串               fputs 写一个字符串到文件中去               fprintf 往文件中写格式化数据               fscanf 格式化读取文件中数据               fread 以二进制形式读取文件中的数据               fwrite 以二进制形式写数据到文件中去               getw 以二进制形式读取一个整数               putw 以二进制形式存贮一个整数     文件状态检查函数 feof 文件结束               ferror 文件读/写出错               clearerr 清除文件错误标志               ftell 了解文件指针的当前位置       文件定位函数 rewind 反绕              

文件操作

眉间皱痕 提交于 2020-02-24 23:01:24
一.文件的打开与关闭  1.定义文件指针的一般形式:FILE *指针变量标识符  2.C语言中有三个特殊的文件指针无需定义、打开可直接使用:    stdin:标准输入,默认为当前终端(键盘)      我们使用的scanf、getchar、函数默认从此终端获得数据    stdout:标准输出,默认为当前终端(屏幕)      我们使用的printf、puts函数默认输出信息到此终端    stderr:标准出错,默认为当前终端(屏幕)      当我们程序出错或使用perror函数时信息打印在此终端  3.打开文件    FILE *fp = NULL;    fp = fopen(文件名,文件打开方式);    • 文件名:要操作的文件的名字,可以包含路径信息     • 文件打开方式:"读"、"写"、"文本"、"二进制"等    • fp文件指针:指向被打开的文件,失败返回空,成功返回相应指针    例如:FILE *fp = NULL;       fp = fopen("test.txt","r");       if(fp == NULL)        printf("File open error\n");  4.文件打开的几种方式:读写权限:r  w  a  +   r:以只读方式打开文件     文件不存在,返回NULL     文件存在,返回文件指针

fopen的打开方式

家住魔仙堡 提交于 2020-01-31 21:35:01
哥今天 打开一个二进制文件,总是读取不到结构体 ,fread返回0,原来打开二进制不能'r'模式,要用日逼模式打开啊:"rb",不然读取不到的。 另外哥要说的是,结构体对齐 VS2010:#pragma pack (1),linux下忘了,个人搜吧 C语言函数fopen 函数简介    函数功能: 打开一个 文件    函数原型: FILE * f open (const char * path,const char * mode);    相关函数: open , fclose , fopen_s [1] ,_wfopen    所需库: < stdio.h >    返回值: 文件 顺利打开后,指向该流的 文件指针 就会被返回。如果 文件 打开失败则返回NULL,并把 错误代码 存在errno 中。   一般而言,打开 文件 后会作一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在f open ()后作错误判断及处理。    参数说明:   参数path 字符 串包含欲打开的 文件 路径及文件名,参数mode字符串则代表着流 形态 。   mode有下列几种形态字符串:   r 以 只读 方式打开 文件 ,该文件必须存在。   r+ 以可读写方式打开 文件 ,该文件必须存在。   rb+ 读写打开一个 二进制文件 ,允许读 数据 。   rw+

C语言文件操作解析

爷,独闯天下 提交于 2020-01-24 04:12:42
转自:http://www.cnblogs.com/dolphin0520/archive/2011/10/05/2199396.html C语言文件操作解析(一) 在讨论C语言文件操作之前,先了解一下与文件相关的东西。 一.文本文件和二进制文件 文本文件的定义:由若干行字符构成的计算机文件,存在于计算机系统中。文本文件只能存储文件中的有效字符信息,不能存储图像、声音等信息。狭义上的二进制文件则指除开文本文件之外的文件,如图片、DOC文档。 事实上,无论是上面所定义的文本文件还是二进制文件,在计算机中存储都是以二进制的形式存储的,因此其本质并没有区别。所以广义上的二进制文件便指所有的文件。 通常意义下,我们所说的文本文件指只包含了纯文本信息的文件(通过手动编辑完成,包含的都是可显字符),二进制文件特指文件里面存储的是二进制代码的文件。至于为什么在计算机内存储的都是二进制数据,而给我们所呈现的确是文字、图像等信息,这跟计算机硬件组成有关系,因为计算机里面的元件是晶体管,其只有两种稳定的状态,因此二进制的0和1能表示其状态。很多个晶体管的不同状态的组合便呈现给我们不同的信息了。下面以汉字在计算机中的表示为例。 二.汉字在计算机中的表示 用计算机去处理汉字信息,必须对汉字进行编码,变成能被计算机识别的二进制。汉字编码主要有输入码、机内码、字形码三种。分别有不同的作用。 输入码

C语言文件操作

戏子无情 提交于 2020-01-24 04:10:26
C语言中没有输入输出语句,所有的输入输出功能都用ANSI C提供的一组标准库函数来实现。文件操作标准库函数有:       文件的打开操作 fopen 打开一个文件       文件的关闭操作 fclose 关闭一个文件       文件的读写操作 fgetc 从文件中读取一个字符               fputc 写一个字符到文件中去               fgets 从文件中读取一个字符串               fputs 写一个字符串到文件中去               fprintf 往文件中写格式化数据               fscanf 格式化读取文件中数据               fread 以二进制形式读取文件中的数据               fwrite 以二进制形式写数据到文件中去               getw 以二进制形式读取一个整数               putw 以二进制形式存贮一个整数     文件状态检查函数 feof 文件结束               ferror 文件读/写出错               clearerr 清除文件错误标志               ftell 了解文件指针的当前位置       文件定位函数 rewind 反绕               fseek 随机定位

C语言详解FILE文件操作

倾然丶 夕夏残阳落幕 提交于 2019-12-15 01:42:59
1. 需要了解的概念 需要理解的知识点包括:数据流、缓冲区、文件类型、文件存取方式 1.1 数据流: 指程序与数据的交互是以流的形式进行的。进行C语言文件的存取时,都会先进行“打开文件”操作,这个操作就是在打开数据流,而“关闭文件”操作就是关闭数据流。 1.2 缓冲区(Buffer): 指在程序执行时,所提供的额外内存,可用来暂时存放做准备执行的数据。它的设置是为了提高存取效率,因为内存的存取速度比磁盘驱动器快得多。 C语言中带缓冲区的文件处理: C语言的文件处理功能依据系统是否设置“缓冲区”分为两种:一种是设置缓冲区,另一种是不设置缓冲区。由于不设置缓冲区的文件处理方式,必须使用较低级的I/O函数(包含在头文件io.h和fcntl.h中)来直接对磁盘存取,这种方式的存取速度慢,并且由于不是C的标准函数,跨平台操作时容易出问题。下面只介绍第一种处理方式,即设置缓冲区的文件处理方式: 当使用标准I/O函数(包含在头文件stdio.h中)时,系统会自动设置缓冲区,并通过数据流来读写文件。当进行文件读取时,不会直接对磁盘进行读取,而是先打开数据流,将磁盘上的文件信息拷贝到缓冲区内,然后程序再从缓冲区中读取所需数据,如下图所示: 事实上,当写入文件时,并不会马上写入磁盘中,而是先写入缓冲区,只有在缓冲区已满或“关闭文件”时,才会将数据写入磁盘,如下图所示。 1.3 文件类型:

C语言的文件读取与写入操作

一曲冷凌霜 提交于 2019-12-07 18:28:59
学了一年的C语言了,现在回过头来做一下总结。并且博客开了挺长一段时间却没有谢什么实际的东西。现在做下总结,对之后的学习帮助应该挺大的。与大家共勉! 现在,我先来介绍一下C语言的文件读取与写入的原理和具体操作方法。 C语言文件读取与写入是通过将文件看成一个字符序列进行读入和写出的。所以读取与写入文件就用到了指针,而这个指针是一个特殊的指针,我们称为文件指针。 指针名称是:FILE 对指针进行的文件打开操作是fopen。 引用百度百科对fopen这个函数进行介绍 函数简介 函数原型: FILE * fopen(const char * path,const char * mode); 返回值: 文件顺利打开后, 指 向该流的 文件指针 就会被返回。如果文件打开失败则返回NULL,并把 错误代码 存在 errno 中。 一般而言,打开文件后会做一些文件读取或写入的动作,若打开文件失败,接下来的读写动作也无法顺利进行,所以一般在fopen()后作错误判断及处理。 参数说明: 参数path 字符 串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。 mode有下列几种形态 字符串 : r 以 只读 方式打开文件,该文件必须存在。 r+ 以可读写方式打开文件,该文件必须存在。 rb+ 读写打开一个 二进制文件 ,允许读写数据,文件必须存在。 w 打开只写文件