zoukankan      html  css  js  c++  java
  • fopen和fopen_s用法的比较

    参考:

    在定义FILE * fp 之后,fopen的用法是: fp = fopen(filename,"w")。而对于fopen_s来说,还得定义另外一个变量errno_t err,然后err = fopen_s(&fp,filename,"w")。返回值的话,对于fopen来说,打开文件成功的话返回文件指针(赋值给fp),打开失败则返回NULL值;对于fopen_s来说,打开文件成功返回0,失败返回非0。

    在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 " );    else       printf( "The file 'crt_fopen_s.c' was opened " );

       // Open for write     if( (err = fopen_s( &stream2, "data2", "w+" )) != 0 )       printf( "The file 'data2' was not opened " );    else       printf( "The file 'data2' was opened " );

       // Close stream if it is not NULL     if( stream)    {       if ( fclose( stream ) )       {          printf( "The file 'crt_fopen_s.c' was not closed " );       }    }

       // All other files are closed:    numclosed = _fcloseall( );    printf( "Number of files closed by _fcloseall: %u ", numclosed ); }

  • 相关阅读:
    leetcode 29-> Divide Two Integers without using multiplication, division and mod operator
    ros topic 发布一次可能会接收不到数据
    python中的print()、str()和repr()的区别
    python 部分函数
    uiautomatorviewer错误 unable toconnect to adb
    pyqt 不规则形状窗口显示
    appium 计算器demo
    Spring 3.0 注解注入详解
    Spring Autowire自动装配
    restful 学习地址
  • 原文地址:https://www.cnblogs.com/MCSFX/p/11099173.html
Copyright © 2011-2022 走看看