#include <iostream>
#include <string>
#include <cstdio>
int main()
{
std::string input[] = { "1.0.7", "1.0.", "1.0", "1.", "1" };
for (size_t i = 0; i < sizeof(input)/sizeof(input[0]); i++)
{
std::cout << input[i] << ": ";
// Init to zero.
int parts[3] = { 0 };
if (std::sscanf(input[i].c_str(),
"%d.%d.%d",
&parts[0],
&parts[1],
&parts[2]) >= 2)
{
// OK, the string contained at least two parts.
std::cout << parts[0]
<< ","
<< parts[1]
<< ","
<< parts[2]
<< "\n";
}
else
{
std::cout << "bad format\n";
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y3N0ZGlvPgoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnN0cmluZyBpbnB1dFtdID0geyAiMS4wLjciLCAiMS4wLiIsICIxLjAiLCAiMS4iLCAiMSIgfTsKCiAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihpbnB1dCkvc2l6ZW9mKGlucHV0WzBdKTsgaSsrKQogICAgewogICAgICAgIHN0ZDo6Y291dCA8PCBpbnB1dFtpXSA8PCAiOiAiOwoKICAgICAgICAvLyBJbml0IHRvIHplcm8uCiAgICAgICAgaW50IHBhcnRzWzNdID0geyAwIH07CgogICAgICAgIGlmIChzdGQ6OnNzY2FuZihpbnB1dFtpXS5jX3N0cigpLAogICAgICAgICAgICAgICAgICAgICAgICAiJWQuJWQuJWQiLAogICAgICAgICAgICAgICAgICAgICAgICAmcGFydHNbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICZwYXJ0c1sxXSwKICAgICAgICAgICAgICAgICAgICAgICAgJnBhcnRzWzJdKSA+PSAyKQogICAgICAgIHsKICAgICAgICAgICAgLy8gT0ssIHRoZSBzdHJpbmcgY29udGFpbmVkIGF0IGxlYXN0IHR3byBwYXJ0cy4KCiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCBwYXJ0c1swXQogICAgICAgICAgICAgICAgICAgICAgPDwgIiwiCiAgICAgICAgICAgICAgICAgICAgICA8PCBwYXJ0c1sxXQogICAgICAgICAgICAgICAgICAgICAgPDwgIiwiCiAgICAgICAgICAgICAgICAgICAgICA8PCBwYXJ0c1syXQogICAgICAgICAgICAgICAgICAgICAgPDwgIlxuIjsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJiYWQgZm9ybWF0XG4iOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAwOwp9Cg==