sscanf 与 sscanf_s的区别

Posted xingzhensun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sscanf 与 sscanf_s的区别相关的知识,希望对你有一定的参考价值。

  众所周知,使用C语言读取文本,比C++的文件流快的多,而C语言格式化读取最常用、功能最强大的函数是:sscanf

  关于sscanf函数的用法,有一篇文章讲解的很详细、很透彻,大家可以查看链接:https://www.jb51.net/article/90495.htm

  本文主要讲一下与sscanf_s的区别:

  在vs2010以上平台编写代码时,总是提示sscanf函数不安全,有的时候还会报错,这时候就需要使用sscanf_s函数。

如果是进行格式化读取字符串的话,就可能会报错,我就遇到这个问题,耗费了大半天工夫才搞定。

  在格式化读取字符串时,如果把sscanf修改为sscanf_s,需要在字符串之后指定字符串的空间大小,否则会出现未知错误。

  下面是一个sscanf_s格式化读取字符串的一个示例:

 1     char name[64];
 2     char time[64];
 3     char status[64];
 4 
 5     double px, py, pz, rmsH, rmsV;
 6     int nSta;
 7 
 8     char line[512] = "sd1 15:17:07 116.5178566411 39.7644534169 21.884 0.016 0.037 13 固定解 2.20";
 9 
10     sscanf_s(line, "%s%s%lf%lf%lf%lf%lf%d",
11         name, 64, time, 64, &px, &py, &pz,
12         &rmsH, &rmsV, &nSta/*, status, &cp.pdop*/);

 

以上是关于sscanf 与 sscanf_s的区别的主要内容,如果未能解决你的问题,请参考以下文章

如何将 C++ sscanf_s() 函数转换为 C# [关闭]

sscanf sscanf_s使用

sscanf(),sscanf_s()的相关用法

sscanf_s读取字符串报错的问题分析

swscanf_s和sscanf_s的使用

C语言sscanf()函数(从字符串读取格式化输入,提取需要的信息)