Leetspeak Converter
You can never have access to enough leetspeak converters/generators. That's why I have written one in C. This one works as a filter; reading from standard input and writing to standard output. Some randomization code is included since characters can be written in many different ways.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
char *leet[26][5] = {"4", "/\\", "@", "/-\\", "^",
"8", "13", "|3", "!3", "(3",
"[", "<", "(", "{", "©",
")", "[)", "I>", "|>", "|)",
"3", "&", "£", "ë", "[-",
"|=", "|#", "/=", NULL, NULL,
"6", "9", "(_+", "(y,", "(_-",
"#", "/-/", "[-]", "]-[", ")-(",
"!", "|", "]", NULL, NULL,
"_|", "_/", "</", "(/", NULL,
"X", "|<", "|{", NULL, NULL,
"1", "1_", "|_", NULL, NULL,
"|v|", "]V[", "|\\/", "/\\/\\", "^^",
"/\\/", "[\\]", "<\\>", "{\\}", "^/",
"0", "()", "[]", "¤", NULL,
"|*", "|\"", NULL, "|7", "¶", "þ",
"()_", "0_", "<|", NULL, NULL,
"|?", "|2", "|^", "12", "®",
"5", "$", "z", "§", NULL,
"7", "+", "-|-", NULL, NULL,
"(_)", "|_|", "v", "L|",
"\\/", NULL, NULL, NULL, NULL,
"\\/\\/", "vv", "\\|/", "\\^/", "\\V/",
"%", "><", "}{", ")(", "*",
"j", "`/", "¥", NULL, NULL,
"2", ">_", "7_", NULL, NULL};
int main(void)
{
int c, ci;
char *cp;
srandom(time(NULL));
while ((c = fgetc(stdin)) != EOF) {
if (c >= 0x41 && c <= 0x5a) { /* A-Z */
ci = c - 0x41;
while ((cp = leet[ci][random() % 5]) == NULL);
fputs(cp, stdout);
} else if (c >= 0x61 && c <= 0x7a) { /* a-z */
ci = c - 0x61;
while ((cp = leet[ci][random() % 5]) == NULL);
fputs(cp, stdout);
} else
fputc(c, stdout);
}
return 0;
}
1[-37 \V/¤|?|>$ [/\/\/ !3£ &}{|7|^£$z[-) |^/ /-/v{\}I>12ë[)§ ()|= \V/^j5.