#include <ctype.h>
#include <stdio.h>
size_t change(char *dst, size_t n, const char *src) {
size_t nn = 1; // for the zero terminator
static char cvt[][2][99] = {{"a", "AUAU"},
{"e", "-------"},
{"u", "AUAUAUAUAU"}};
while (*src) {
if (nn == n) break;
int found = 0;
for (int i = 0; i < sizeof cvt / sizeof *cvt; i++) {
if (tolower(*src
) == cvt
[i
][0][0]) { char *p = cvt[i][1];
found = 1;
while (*p) {
*dst++ = *p++;
nn++;
if (nn == n) break;
}
break;
}
}
if (!found) {
*dst++ = *src;
nn++;
}
src++;
}
*dst = 0;
return nn;
}
int main(void) {
char x[99];
int n;
n = change(x, 99, "Gustavo");
printf("Gustavo ==> %s (%d)\n", x
, n
); }
I2luY2x1ZGUgPGN0eXBlLmg+CiNpbmNsdWRlIDxzdGRpby5oPgoKc2l6ZV90IGNoYW5nZShjaGFyICpkc3QsIHNpemVfdCBuLCBjb25zdCBjaGFyICpzcmMpIHsKICAgIHNpemVfdCBubiA9IDE7IC8vIGZvciB0aGUgemVybyB0ZXJtaW5hdG9yCiAgICBzdGF0aWMgY2hhciBjdnRbXVsyXVs5OV0gPSB7eyJhIiwgIkFVQVUifSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ImUiLCAiLS0tLS0tLSJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsidSIsICJBVUFVQVVBVUFVIn19OwogICAgd2hpbGUgKCpzcmMpIHsKICAgIAlpZiAobm4gPT0gbikgYnJlYWs7CiAgICAJaW50IGZvdW5kID0gMDsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVvZiBjdnQgLyBzaXplb2YgKmN2dDsgaSsrKSB7CiAgICAgICAgICAgIGlmICh0b2xvd2VyKCpzcmMpID09IGN2dFtpXVswXVswXSkgewogICAgICAgICAgICAgICAgY2hhciAqcCA9IGN2dFtpXVsxXTsKICAgICAgICAgICAgICAgIGZvdW5kID0gMTsKICAgICAgICAgICAgICAgIHdoaWxlICgqcCkgewogICAgICAgICAgICAgICAgICAgICpkc3QrKyA9ICpwKys7CiAgICAgICAgICAgICAgICAgICAgbm4rKzsKCQkJICAgIAlpZiAobm4gPT0gbikgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIWZvdW5kKSB7CiAgICAgIAkJKmRzdCsrID0gKnNyYzsKICAgIAkJbm4rKzsKICAgICAgICB9CiAgICAgICAgc3JjKys7CiAgICB9CiAgICAqZHN0ID0gMDsKICAgIHJldHVybiBubjsKfQoKaW50IG1haW4odm9pZCkgewogICAgY2hhciB4Wzk5XTsKICAgIGludCBuOwogICAgbiA9IGNoYW5nZSh4LCA5OSwgIkd1c3Rhdm8iKTsKICAgIHByaW50ZigiR3VzdGF2byA9PT4gJXMgKCVkKVxuIiwgeCwgbik7Cn0K