Это связано с sscanf usage - how to verify a completed scan vs an aborted scan, но это краевой кейс, на который не распространяется этот вопрос.Соответствующий текст в sscanf?
char entry[] = "V2X_3_accepted";
int d1,d2,ret1,ret2;
ret1 = sscanf(entry,"V2X_%d_expected",&d1);
ret2 = sscanf(entry,"V2X_%d_received",&d2);
Ожидаемый результат: ret1==0; ret2==0; d1, d2
undefined.
Фактический результат: ret1==1; ret2==1; d1=d2=3
.
Использование %n
в конце не поможет, так как строки соответствия равны по длине. Есть ли какой-то аккуратный трюк, чтобы соответствовать завершающему тексту без выполнения последовательного strncmp или подобного?
@ user3121023: Nice! Отправьте это как ответ. –