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*/);

猜你喜欢

转载自www.cnblogs.com/xingzhensun/p/9915277.html