Ваше объявление words
внутри main
является правильным, но для передачи двумерного массива в функцию, вы должны объявить его как таковой в функции.Ваше текущее объявление printWords
только объявляет его параметр как одномерный массив символов, что объясняет, почему оно не работает правильно.
Минимум, необходимый для правильного объявления этого, следующий:
void printStrings(char words[][MAX_WORD_SIZE])
Однако в этом случае у вас есть возможность сделать это:
void printStrings(char words[NUM_WORDS][MAX_WORD_SIZE])
Это имеет преимущество (и недостаток) в том, что подразумевает большее ограничение на то, что может / должно быть передано в printWords.Это немного похоже на разницу между:
void function(char foo[])
, который принимает массив символов произвольного размера, и
void function(char foo[FOO_SIZE])
, который утверждает, что ожидает массив FOO_SIZE
, не большеи не меньше.
Обратите внимание, что вы можете исключить только самое внешнее (крайнее левое) измерение, требуются внутренние, чтобы компилятор знал предельный размер каждого внешнего элемента.