Во-первых, это должно быть лучше
char* Y[LETTER_HEIGHT] = {
"___ __\n",
"\\ \\__ / /\n",
"\\ \\ / /\n",
"| | |\n",
"| | |\n",
"|__|__|\n"};
char* O[LETTER_HEIGHT] = {
" _______ \n",
" / __ \\\n",
"| | | |\n",
"| |__| |\n",
" \\_______/\n"};
Теперь это массивы размером 6 (вы должны добавить одну строку, потому что теперь O имеет высоту 5), содержащие указатели на массивы символов. Далее
char** SENTENCE[2] = {Y, O};
Вы делали некоторые действительно странные вещи с этой строкой раньше, это определяет SENTENCE как двухэлементный массив указателей на массив указателей на массивы char (это Y и O). Далее
void printLetter(char** letter) {
for (int i = 0; i < LETTER_HEIGHT; i++) {
printf("%s", letter[i]);
}
}
Эта функция принимает указатель на массив указателей на массивы символов. Затем идет 6 раз и выводит каждый массив в виде строки. Далее
void printSentence() {
for (int i = 0; i < 2; i++) {
printLetter(SENTENCE[i]);
sleep(1);
}
}
Здесь вы можете использовать simple for l oop для передачи printLetter каждого указателя на массив указателей на массивы символов (которые являются этими буквами) из SENTENCE.