精华内容
下载资源
问答
  • fopen_s

    千次阅读 2014-04-16 11:00:18
    fopen_s  (2011-09-14 13:31:41) 转载▼ 标签:  杂谈 分类: MFC 编辑本段fopen_s 函数原型  fopen_s,_wfopen_s  打开一个文件,这些版本比fopen,_wfopen在安全性上...

    fopen_s

     (2011-09-14 13:31:41)
    标签: 

    杂谈

    分类: MFC

    编辑本段fopen_s 函数原型

      fopen_s,_wfopen_s
      打开一个文件,这些版本比fopen,_wfopen在安全性上都有增强。
      使用方法:
      ---------------------------------------------------
      errno_t fopen_s( FILE** pFile, const char *filename, const char *mode );
      errno_t _wfopen_s( FILE** pFile, const wchar_t *filename, const wchar_t *mode );
      ---------------------------------------------------

    编辑本段函数参数和返回值

      [输出] pFile
      (FILE*)指针
      [输入] filename
      文件名(可以加文件路径)
      [输入] mode
      访问方式。
      ---------------------------------------------------
      返回值:
      如果成功返回0,失败则返回相应的错误代码。
      错误代码请到_doserrno,errno, _sys_errlist, and _sys_nerr去了解更多
      错误条件
      
    pFile filename mode 返回值 pFile的内容
    NULL 任何 任何 EINVAL 没有改变
    任何 NULL 任何 EINVAL 没有改变
    任何 任何 NULL EINVAL 没有改变
     EINVAL:无效的参数。
      备注:
      文件由fopen_s_wfopen_s打开不能共享。(也就是别人无法读/写和访问)如果你确实想让他可以访问, use _fsopen,_wfsopen withthe appropriate sharing mode constant (例如, _SH_DENYNOfor read/write sharing).
      ……

    编辑本段文件访问方式

      "r"
      只读,若文件不在则出错。
      "w"
      打开一个空文件来编写。若文件已经存在,内容会被全部清空;若文件不在则创建。(不可以创建文件夹)。
      "a"
      若文件存在就在文件末尾追加字符(也就是把光标移动到文件的EOF处),若文件不在就创建。
      EOF:结束标志
      "r+"
      读/写,都可以。文件必须存在。
      "w+"
      就是"W"再多一个阅读的权力。也清空内容。
      "a+"
      读/写,并且把光标移动到EOF处。
      当使用”a”和”a+”来打开一个文件时,光标会自动移动到EOF处,如果需要定位光标,则需要用到fseek 或者 rewind 函数。
      --待续。。。
      参考资料:
      英文原文 GOOGLE翻译
    展开全文
  • fopen_s fscanf_s fprintf_s fread

    千次阅读 2016-09-11 21:11:29
    errno_t fopen_s( FILE** pFile, const char *filename, const char *mode );fopen_s 返回 0 表示成功访问文件,所以用err = fopen_s(fp,filename,"r")!=0来判断是否成功打开或创建文件fscanf_s()fscanf_s用法: ...
    errno_t fopen_s( FILE** pFile, const char *filename, const char *mode );

    fopen_s 返回 0 表示成功访问文件,所以用

    err = fopen_s(&fp,filename,"r")!=0

    来判断是否成功打开或创建文件

    fscanf_s()

    fscanf_s用法:

     char a[80];
     fscanf(fp,"%d",&var);
     fscanf(fp,"%s",a,80);

    FILE *指针,”转换说明符”,目标数组或其他,单个数据大小(字符串大小)

    fprintf_s

    fprintf_s(fp, "%s\n", photo[i]);

    目标文件,转换说明符,输出数据

    fread

    函数原型

    size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;

    参 数
    buffer
    用于接收数据的内存地址
    size
    要读的每个数据项的字节数,单位是字节
    count
    要读count个数据项,每个数据项size个字节.
    stream
    输入流

    fwrite

    size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream);

    注意:这个函数以二进制形式对文件进行操作,不局限于文本文件
    返回值:返回实际写入的数据块数目
    (1)buffer:是一个指针,对fwrite来说,是要获取数据的地址;
    (2)size:要写入内容的单字节数;
    (3)count:要进行写入size字节的数据项的个数;
    (4)stream:目标文件指针;
    (5)返回实际写入的数据项个数count。
    说明:写入到文件的哪里? 这个与文件的打开模式有关,如果是w+,则是从file pointer指向的地址开始写,替换掉之后的内容,文件的长度可以不变,stream的位置移动count个数;如果是a+,则从文件的末尾开始添加,文件长度加大。
    fseek对此函数有作用,但是fwrite 函数写到用户空间缓冲区,并未同步到文件中,所以修改后要将内存与文件同步可以用fflush(FILE *fp)函数同步。

    展开全文
  • fopen 和 fopen_s

    千次阅读 2017-08-28 15:38:31
    fopen 和 fopen_s fopen用法: fopen打开文件成功,返回文件指针(赋值给fp),打开失败则返回NULL值; fp = fopen(filename,"w")。 fopen_s用法: 须定义另外一个变量errno_t err来表示文件打开是否成功 ...

    fopen 和 fopen_s

    fopen用法:

    fopen打开文件成功,返回文件指针(赋值给fp),打开失败则返回NULL值;

    fp = fopen(filename,"w")。


    fopen_s用法:

    须定义另外一个变量errno_t err来表示文件打开是否成功

    fopen_s打开文件成功返回0,失败返回非0。

    err = fopen_s(&fp,filename,"w")。

                       

    在vs编程中,经常会有这样的警告:

    warning 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.

    是因为  fopen_s比fopen多了溢出检测,更安全一些。


    #include<stdio.h>
    ...
    FILE *stream, *stream2;
    int main( void )
    {
       int numclosed;
       errno_t err;
    
       // Open for read (will fail if file "crt_fopen_s.c" does not exist)
       if( (err  = fopen_s( &stream, "crt_fopen_s.c", "r" )) !=0 )
          printf( "The file 'crt_fopen_s.c' was not opened\n" );
       else
          printf( "The file 'crt_fopen_s.c' was opened\n" );
    
       // Open for write 
       if( (err = fopen_s( &stream2, "data2", "w+" )) != 0 )
          printf( "The file 'data2' was not opened\n" );
       else
          printf( "The file 'data2' was opened\n" );
    
       // Close stream if it is not NULL 
       if( stream)
       {
          if ( fclose( stream ) )
          {
             printf( "The file 'crt_fopen_s.c' was not closed\n" );
          }
       }
    
       // All other files are closed:
       numclosed = _fcloseall( );
       printf( "Number of files closed by _fcloseall: %u\n", numclosed );
    }


    fscanf 和 fscanf_s

          fscanf用法:fscanf(fp,"%d",&var)           //对比scanf

          fscanf_s用法:fscanf(fp,"%d",&var,sizeof(int))

          区别:fscanf_s需要指定长度



    转自:

    fopen 和 fopen_s,fscanf 和 fscanf_s用法的比较详解


    展开全文
  • fopen改写fopen_s

    2020-05-29 19:37:12
    Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 这里记录一下: FILE* pFile = fopen(filename, "rb"); 改为 FILE* pFile; if(fopen_s(&pFile...

    在使用VS2017编译C++工程时,遇到了:错误C4996    'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. 

    这里记录一下:

    FILE* pFile = fopen(filename, "rb");

    改为

    FILE* pFile;

    if(fopen_s(&pFile, filename, "rb"))

         return false;

    当然也可以在工程里加入预处理器设置:_CRT_SECURE_NO_WARNINGS

    两者比较:

    1.fopen_s的安全是在于比函数fopen多了溢出检测; 
    2.在使用上,函数fopen的返回值是文件指针,如果返回的文件指针为NULL时,则表示打开文件失败。而函数fopen_s的返回值是相应的错误代码,通过查看错误代码代表的含义,有助于排查问题。 
    3.fopen_s打开的文件不能共享,如果你打开的文件需要共享的话,不能使用fopen_s函数。可以考虑_fopen,_wfsopen这两个函数。

    展开全文
  • fopen和fopen_s

    2017-12-19 16:44:54
    人脸检测 OpenCV fopen fopen_s
  • fopen_s,fscanf_s怎么使用?

    万次阅读 2019-06-21 19:12:48
    但是我们发现现在在VS里面如果使用这些函数,VS会以安全性为由报错,除了在程序最前面加上#program warning(disable:4996)以外,我们另外一个方法就是把这两个函数改成fopen_s和fscanf_s.下面直接进入主题说明这两个...
  • fopen_s、fscanf_s、fprintf_s、fclose #include <stdio.h> #include <stdlib.h> FILE *stream; int main( void ) { long l; float fp; char s[81]; char c; errno_t ...
  • VS2019中经常会遇到fopen打开文件错误,此时需要改为fopen_s fopen用法:FILE* fp; fp=fopen(filename,“w”); fopen_s用法:errno_t err; err=fopen_s(&fp,filename,“w”); 如: errno_t err = fopen_s(&...
  • open和fopen_s用法的比较 fopen和fopen_s fopen用法:fp=fopen(filename,"w")。 fopen_s用法:,须定义另外一个变量errno_terr,然后err=fopen_s(&fp,filename,"w")。 返回值:fopen打开文件成功,返回...
  • fopen和fopen_s用法的比较  fopen 和 fopen_s  fopen用法: fp = fopen(filename,"w")。  fopen_s用法:,须定义另外一个变量errno_t err,然后err = fopen_s(&fp,filename,"w")。  ...
  • 用函数fopen_s打开数据文件 1. fopen_s函数的用法 fopen_s函数声明如下: errno_t fopen_s ( FILE** pFile, const char *filename, const char *mode ); fopen_s函数有3个参数,它的调用方式为:...
  • fopen_s打开文件

    2020-07-02 20:13:38
    fopen_s函数声明 errno_t fopen_s ( FILE** pFile, const char *filename, const char *mode ); FILE** pFile:声明一个二级指针 fopen函数的返回值就是FILE** pFile TIP:如果p是一个指向FILE类型数据的...
  • fopen区别于fopen_s,fscanf区别于fscanf_s 首先fopen用法: FIle *fp; fp = fopen(filePath, "w");//参数为文件路径(必须为const char*类型)和权限 返回值为:成功返回文件指针,失败返回NULL; 其次fopen_s的...
  • C++做项目的过程中,需要实现文件打开保存的一个功能,当我对文件tmp.dat进行写操作以后,想要第二次对此文件进行写操作,此时用fopen_s,_wfopen_s均出现返回int error = 13也就是EACCES (Permission denied)的...
  • fopen_s的使用解析

    2020-02-08 14:30:32
    fopen 和 fopen_s的区别 定义FILE *fp 之后 fopen的用法是: fp = fopen("filename,“w”); 对于fopen_s来说,还得定义另外一个变量 errno_t err, 然后err = fopen_s(&fp,“filename”,“w”); 返回值: fopen...
  • c++中fopen和fopen_s比较

    千次阅读 2019-07-12 14:34:35
    c++中fopen和fopen_s比较 FILE * fopen(const char * path,const char * mode);接收两个实参 返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。 ...
  • fopen 与 fopen_s

    2017-08-04 14:55:21
    FILE * fopen(const char *file, const char *mode) { return( _fsopen(file, mode, _SH_DENYNO) ); //_SH_DENYNO允许共享读写操作 ...errno_t fopen_s(FILE ** pfile, const char *file, const char *mode)
  • VS fopen_s与fopen支持

    千次阅读 2017-06-21 11:41:47
    最普通的解决方法,就是使用fopen_s替代 fopen_s(_Outptr_result_maybenull_ FILE ** _File, _In_z_ const char * _Filename, _In_z_ const char * _Mode); 这是fopen()函数: fopen(_In_z_ const ...
  • C++ 文件读写fopen_s/fopen

    千次阅读 2018-10-23 14:37:41
    最好使用fopen_s,使用fopen提示“not safe”,二者区别如下: 1…fopen_s的安全是在于比函数fopen多了溢出检测。 2.在使用上,函数fopen的返回值是文件指针,如果返回的文件指针为NULL时,则表示打开文件失败。而...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,711
精华内容 1,484
关键字:

fopen_s