#include <iostream>
#include <cctype>
//первый вариант
const char* find_maxseq(const char* s, size_t& n, int (*cmp)(int)){
size_t m;
const char* p, *f = NULL;
n = 0;
while(*s){
while(*s && !(*cmp)(*s))
++s;
p = s;
while(*p && (*cmp)(*p))
++p;
m = (size_t)(p - s);
if(m > n){
n = m;
f = s;
}
s = p;
}
return f;
}
//второй вариант
char* find_maxseq(char* s, int (*cmp)(int)){
size_t m, n = 0;
char* p, *f = NULL;
while(*s){
while(*s && !(*cmp)(*s))
++s;
p = s;
while(*p && (*cmp)(*p))
++p;
m = (size_t)(p - s);
if(m > n){
n = m;
f = s;
}
s = p;
}
if(f != NULL)
*(f + n) = '\0';
return f;
}
int main(void) {
char s[] = "bla-bla(123456), bla123456789, 89 end9";
size_t n;
const char* p = find_maxseq(s, n, &std::isdigit);
if(p != NULL){
std::cout.write(p, n);
std::cout << std::endl;
}
char* t = find_maxseq(s, &std::isdigit);
if(t != NULL)
std::cout << t << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2N0eXBlPgoKLy/Qv9C10YDQstGL0Lkg0LLQsNGA0LjQsNC90YIKY29uc3QgY2hhciogZmluZF9tYXhzZXEoY29uc3QgY2hhciogcywgc2l6ZV90JiBuLCBpbnQgKCpjbXApKGludCkpewoJc2l6ZV90IG07Cgljb25zdCBjaGFyKiBwLCAqZiA9IE5VTEw7CgluID0gMDsKCXdoaWxlKCpzKXsKCQl3aGlsZSgqcyAmJiAhKCpjbXApKCpzKSkKCQkJKytzOwoJCXAgPSBzOwoJCXdoaWxlKCpwICYmICgqY21wKSgqcCkpCgkJCSsrcDsKCQltID0gKHNpemVfdCkocCAtIHMpOwoJCWlmKG0gPiBuKXsKCQkJbiA9IG07CgkJCWYgPSBzOwoJCX0KCQlzID0gcDsKCX0KCXJldHVybiBmOwp9CgovL9Cy0YLQvtGA0L7QuSDQstCw0YDQuNCw0L3RggpjaGFyKiBmaW5kX21heHNlcShjaGFyKiBzLCBpbnQgKCpjbXApKGludCkpewoJc2l6ZV90IG0sIG4gPSAwOwoJY2hhciogcCwgKmYgPSBOVUxMOwoJd2hpbGUoKnMpewoJCXdoaWxlKCpzICYmICEoKmNtcCkoKnMpKQoJCQkrK3M7CgkJcCA9IHM7CgkJd2hpbGUoKnAgJiYgKCpjbXApKCpwKSkKCQkJKytwOwoJCW0gPSAoc2l6ZV90KShwIC0gcyk7CgkJaWYobSA+IG4pewoJCQluID0gbTsKCQkJZiA9IHM7CgkJfQoJCXMgPSBwOwoJfQoKCWlmKGYgIT0gTlVMTCkKCQkqKGYgKyBuKSA9ICdcMCc7CglyZXR1cm4gZjsKfQoKaW50IG1haW4odm9pZCkgewoJY2hhciBzW10gPSAiYmxhLWJsYSgxMjM0NTYpLCBibGExMjM0NTY3ODksIDg5IGVuZDkiOwoKCXNpemVfdCBuOwoJY29uc3QgY2hhciogcCA9IGZpbmRfbWF4c2VxKHMsIG4sICZzdGQ6OmlzZGlnaXQpOwoJaWYocCAhPSBOVUxMKXsKCQlzdGQ6OmNvdXQud3JpdGUocCwgbik7CgkJc3RkOjpjb3V0IDw8IHN0ZDo6ZW5kbDsKCX0KCgljaGFyKiB0ID0gZmluZF9tYXhzZXEocywgJnN0ZDo6aXNkaWdpdCk7CglpZih0ICE9IE5VTEwpCgkJc3RkOjpjb3V0IDw8IHQgPDwgc3RkOjplbmRsOwoJcmV0dXJuIDA7Cn0KCg==