Я работаю над реализацией, которая использует sscanf () для обнаружения ввода.
Ввод будет содержать дефис «-» или не будет. Длина строк и положение дефиса будут различаться.
Примеры:
"18509726-550"
"14782"
Я пытался придумать строку формата, которая возвращает> 0 для строк с дефисом, но не для строк без дефиса, однако я не добился успеха. Это может быть невозможно. Я также понимаю, что есть гораздо лучшие способы добиться этого, но этот код был написан задолго до моего времени.
Код:
// what format string will return 0 for one but not the other?
String^ pszString = "18509726-550"; // or "14782"
int nP;
char buffer[256];
char buffer1[256];
const char* pSrc = (gcnew marshal_context())->marshal_as<const char*>(pszString);
nP=sscanf(pSrc, "%[-]s", buffer, buffer1);
Я пробовал несколько строк формата:
"%s-%s"
"%[0-9-]s"
"%[-]s"
"%[^-]s"
Я изучил любую документацию по sscanf, которую смог найти, и не думаю, что это возможно только с sscanf, но проверка также помогает.
Спасибо ТАК сообщество!