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