我正在使用 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++;
}