A jövőálló megoldás nyilván két index használata:
k= j;
while (isupper((unsigned char) p[j])) {
buff[k++] = p[j];
}
Ha mondjuk kiderül, hogy az elején lévő számjegyeket át kell lépni:
k= j;
while (isdigit((unsigned char) p[j])) ++j;
while (isupper((unsigned char) p[j])) {
buff[k++] = p[j];
}