char型をfloat型に変換
GPSからシリアルポートに流れてくるコンマ区切りのフォーマットをいったんcharにいれて、トークンでぶちぶち切って、違う変数に格納したいです。
流れてくるデータは、
$GPGGA,042449.00,3449.30669291,N,13531.38645000,E,1,4,4.4,81.885,M,34.255,M,,*6D
のような数値です。緯度経度や日付等のデータです。
緯度や経度の数値をfloatやdoubleに変換して変数に格納したいのですが、どうしたらよいでしょうか?
そのまましたらエラーが出てしまいます。
以下は数値をブチブチ切って表示させるプログラムです。
#include <windows.h>
#include <stdio.h>
int main(void)
{
char szSend[] = "$GPGGA,000000.00,0000.00000000,N,00000.00000000,E,0,0,0.0,00.000,M,00.000,M,,*00";
char szBuf[sizeof(szSend)]="$GPGGA,042449.00,3449.30669291,N,13531.38645000,E,1,4,4.4,81.885,M,34.255,M,,*6D";
char *ptr;
ptr=strtok(szBuf,",");
printf("%s\n",ptr);//$GPGGA
ptr=strtok(NULL,",");
printf("%s\n",ptr);//時間
ptr=strtok(NULL,",");
printf("%s\n",ptr);//緯度
ptr=strtok(NULL,",");
printf("%s\n",ptr);//N北
ptr=strtok(NULL,",");
printf("%s\n",ptr);//経度
ptr=strtok(NULL,",");
printf("%s\n",ptr);//E東
ptr=strtok(NULL,",");
・
・
・
・
return 0;
}
コンパイラはmicrosoftvisualC++6.0です。
floatとかboubleにしたいのは緯度や経度の数値を計算して扱いやすいデータにするためです。
よろしくお願いします。