AT コマンドを使用してモデムからテキスト メッセージを読み取る C で書かれたアプリケーションがあります。モデムからの典型的な AT 応答は次のようになります。
+CMGL: 1,"REC READ","+31612123738",,"08/12/22,11:37:52+04"
コードは現在、最初の番号であるこの行から id のみを取得するように設定されており、次のコードを使用してこれを行います。
sscanf(line, "+CMGL: %d,", &entry);
ここで、"line" はモデムからの行を含む文字配列で、"entry" は ID が格納される整数です。このコードを次のように拡張してみました。
sscanf(line, "+CMGL: %d,\"%*s\",\"%s\",", &entry, phonenr);
%*s を使用して最初の引用符のペアのテキストをスキャンしてスキップし、次の引用符のペア (電話番号) のテキストを phonenr 文字配列に読み込むことにしました。
これは機能しません (%*s は明らかに "REC" を読み取り、次の %s は何も読み取りません)。
追加の課題は、テキストが「REC READ」に限定されていないことです。実際には、スペースのないテキストでもあります。