/** * Leet Speak. * * Schreiben Sie eine Funktion `leet`, welche eine Zeichenkette übergeben * bekommt und diese in Leet-Speak umwandelt. Die Funktion gibt eine * neue Zeichenkette zurück, die Ersetzungen entsprechend der folgenden * Tabelle enthält: * * - a, A -> 4 * - e, E -> 3 * - l, L -> 1 * - o, O -> 0 * - s, S -> 5 * - t, T -> 7 * * So wird z.B. aus dem String `Leet Speak` der String `1337 5p34k`. * * Die neue Zeichenkette soll so angelegt werden, dass die Aufrufer der Funktion * diese danach mit `free` wieder freigeben können. */ #include #include #include #include char* leet(const char* text) { char* cpy = strdup(text); char* p = cpy; while (*p) { switch (*p) { case 'a': case 'A': *p = '4'; break; case 'e': case 'E': *p = '3'; break; case 'l': case 'L': *p = '1'; break; case 'o': case 'O': *p = '0'; break; case 's': case 'S': *p = '5'; break; case 't': case 'T': *p = '7'; break; } p++; } return cpy; } void test_leet(const char* text, const char* expected) { char* result = leet(text); assert(strcmp(result, expected) == 0); free(result); } int main(int argc, char** argv) { test_leet("hello", "h3110"); test_leet("Hello", "H3110"); test_leet("HELLO", "H3110"); test_leet("leet", "1337"); test_leet("LeEt", "1337"); test_leet("Leet Speak", "1337 5p34k"); test_leet("mmmmm", "mmmmm"); puts("OK"); return 0; }