TIVA TM4C を使用して、SIM900 携帯電話モデムの SIM カードの残高と有効期限に関するメッセージを取得しています。
以下は、文字列を解析するために使用しているコードです。コードは特定の場所にあるスペースに依存しているため、心配しています。数値のみを解析できれば、より信頼できるように思えます。順序に基づいて、どれがドル、セント、月などであるかを簡単に判別できます。
数値だけを解析するために使用できるより良い方法はありますか? 通貨はそれほど重要ではありません。
コードは次のとおりです。
char *message = NULL; // Balance and expiry message
char expiry[] = "00/00/00"; // Expiry date
char balance[] = "999.99"; // Remaining balance
char currency[] = "USD"; // Balance currency
char *ptr; // Pointer for parsing balance message
int ctr=0; // For stepping through tokens
// Get the balance/expiry message
message = getMessage();
// The message will always look like this:
// +CUSD: 0,"Your account balance is 49.10 USD and will expire on 04/03/16.",64
// Parse
ptr = strtok (message," ");
while (ptr != NULL){
ptr = strtok (NULL," ");
if (ctr == 4) { strcpy(balance,ptr); }
else if (ctr == 5) { strcpy(currency,ptr); }
else if (ctr == 10) { strncpy(expiry,ptr,8); }
ctr++;
}