设为首页 加入收藏

TOP

2.5.5 使用CRT库的安全版本
2013-10-07 00:50:14 来源: 作者: 【 】 浏览:65
Tags:2.5.5 使用 CRT 安全 版本

2.5.5  使用CRT库的安全版本

Visual C++(www.cppentry.com)为一些CRT函数提供了安全版本,即secure version,这些安全版本的函数增强了参数校验、缓冲区大小检测、格式化参数校验等功能。原先那些旧的函数在Visual C++(www.cppentry.com)中会被提示成"deprecated(不建议使用)",如图2-53所示。

 
(点击查看大图)图2-53  不安全的CRT调用

负责任的程序员应该依照这些警告,改用安全的版本。比如,前面用到的函数都具有相应的的安全版本:

  1. errno_t fopen_s(   
  2.    FILE** pFile,  
  3.    const char *filename,  
  4.    const char *mode   
  5. );  
  6.  
  7. int fprintf_s(   
  8.    FILE *stream,  
  9.    const char *format [,  
  10.       argument ]...  
  11. );  
  12.  
  13. int fwprintf_s(   
  14.    FILE *stream,  
  15.    const wchar_t *format [,  
  16.       argument ]...  
  17. );  
  18.  
  19. int fscanf_s(   
  20.    FILE *stream,  
  21.    const char *format [,  
  22.       argument ]...   
  23. );  
  24.  
  25. int fwscanf_s(   
  26.    FILE *stream,  
  27.    const wchar_t *format [,  
  28.       argument ]...   
  29. ); 

后缀_s表明该函数是一个安全版本(secure version)。

现在动手

接下来,我们体验如何采用CRT库函数的secure版本来操作文件。

【程序 2 15】使用CRT库的安全版本输出茴字

  1. 01  #include "stdafx.h" 
  2. 02  #include <cstdio>  
  3. 03    
  4. 04  int main()  
  5. 05  {  
  6. 06      //写入文件  
  7. 07      FILE * fp;  
  8. 08      fopen_s(&fp, "test.out""w");  
  9. 09      fprintf_s(fp, "茴香豆的茴");  
  10. 10      fclose(fp);  
  11. 11    
  12. 12      //读取文件  
  13. 13      fopen_s(&fp, "test.out""r");  
  14. 14      char line[256];  
  15. 15      fscanf_s(fp, "%s", line, 256);  
  16. 16      printf_s("%s\r\n", line);  
  17. 17      fclose(fp);  
  18. 18    
  19. 19      return 0;20 } 

光盘导读

该项目对应于光盘中的目录"\ch02\ CrtSafeWriter"。

【责任编辑:云霞 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.5.3 使用CRT(C运行时期库) 下一篇2.5.6 使用MFC/ATL

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: