AIS中STM32程序,Sprintf函数,函数字符串形参

来源:互联网 发布:淘宝经营模式是什么 编辑:程序博客网 时间:2024/04/28 11:29

在一段字符串中间加上另外的字符串,并有相应的格式,组好的方法是使用sprintf格式化输出函数将其打印到另一个字符串中,最终的字符串就是自己想要的字符串。
sprintf函数的经典使用历程如下所示,该历程使用的是在进行AIS解析时使用的一段程序。工作日志2017-2-10

 int prepareAisStr(int shipID, double LatGPS, double LonGPS, char* pAisStr){int LatDegree, LonDegree;double LatGpsAis, LonGpsAis;char pStr[200];int nCheckSum;LatDegree = (int)LatGPS;LonDegree = (int)LonGPS;LatGpsAis = (LatGPS-LatDegree)/60.0 + LatDegree*100.0;LonGpsAis = (LonGPS-LonDegree)/60.0 + LonDegree*100;sprintf(pStr, "UNSR,07,%d,AA00,%4.7f,N,%5.7f,E,001,002,03,04", shipID, LatGpsAis, LonGpsAis);  //sprintf函数的使用方法//源字符串为UNSR,07,999413001,,,N,,E,001,002,03,04不包括船舶号以及经纬度该sprintf函数的作用就是将相应的中间需要的数据加上转换为UNSR,07,999413001,AA1,3036.0000,N,11421.0000,E,001,002,03,04的形式。nCheckSum = CalCrcCheck(pStr);   //CalCrcCheck函数的作用实行校验并返回校验的结果给nCheckSum,例句的校验结果为00   16进制sprintf(pAisStr, "$%s*%2X", pStr, nCheckSum);   //最终的结果要形成$UNSR,07,999413001,AA1,3036.0000,N,11421.0000,E,001,002,03,04*00return 0;}int CalCrcCheck(char str[]) {    int sum,len,i;    len=strlen(str);    sum=0;    for(i=0;i<=len-1;i++)    {        sum=sum^str[i];    }//    printf("len=%d \n",len);//    printf("sum=%d \n",sum);//    printf("sum=%02X \n",sum);    return sum;}
0 0