В коде на Си спользую sscanf(), что бы распарсить строку вида «<0x7fb2a00010a0|1779>» (два числа, шестнадцатеричное и десятичное) шаблоном «<%p|%zu>», и оно то работает, то не работает. Может в форме входной строки или шаблоне что-то не так, но что интересно, что sscanf всегда работает по разному, сегодня он данные принимает и распознаёт, а завтра уже говорит «ничего не вижу», а после завтра видит только одно из двух чисел, и от чего его настроение зависит мне не понятно. Вызов выглядит вот так:
int atk_memfile_from_specresid( const char *residual,
char const **bufpp,
size_t *szp )
{
int result = sscanf(residual, "<%p|%zu>", bufpp, szp);
if( result == EOF )
{
return 0;
}
if( *bufpp < (const char*)0x100 )
{
return 0;
}
if( result )
{
return 1;
}
return 0;
}
- Что не так с входными данными и шаблоном?
- И почему поведение каждый раз меняется?