众所周知,使用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*/);