سؤال

وتخيل ما يلي:

وتقرأ في سلسلة مع scanf() ولكن تحتاج فقط عدد قليل من datapoints في السلسلة.

هل هناك طريقة سهلة لتتخلص من معلومات غريبة، دون أن تفقد القدرة على معرفة ما اذا كان البيانات المناسبة هناك حتى تتمكن من لا يزال يرفض سلاسل تالف بسهولة؟

وعلى سبيل المثال:

const char* store = "Get: 15 beer 30 coke\n";
const char* dealer= "Get: 8 heroine 5 coke\n";
const char* scream= "Get: f* beer 10 coke\n";

وأريد أن استعرض السلسلة الأولى، ولكن ننسى البيرة بسبب البيرة yuckie. أريد أن رفض الجمل الثانية والثالثة لأنها من الواضح لا القوائم المناسبة ل7/11؛

وهكذا كنت أفكر في بناء التالية:

char* bId = new char[16];
char* cId = new char[16];
int cokes;
sscanf([string here], "Get: %d %s %d %s\n", [don't care], bId, &cokes, cId);

وبهذه الطريقة أود أن تبقي فحص الشكل، ولكن ما يمكن أن أضع ل[لا تهتم] أن لا يجعل أنين مترجم؟

وبالطبع أنا يمكن أن يجعل مجرد متغير أنا لا تستخدم في وقت لاحق، ولكن ليس هذا هو الهدف من هذا السؤال. أيضا التحقق من الجانب الأيسر والأيمن منفصل هو الحل واضح وأنا لا أبحث عن هنا.

وهكذا، ليس هناك وسيلة للا يهتمون لكنها ما زالت تحقق نوع من قطعة من الخيط في scanf والأصدقاء؟

هل كانت مفيدة؟

المحلول

واستخدام * كحرف مهمة قمع بعد٪

مثال:

  sscanf([string here], "Get: %*d %s %d %s\n", bId, &cokes, cId);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top