Вы выделили массив указателей, но не выделили память, на которую они могли бы указывать.Вам нужно вызвать malloc
, чтобы выделить память из кучи.
char *foo[100];
foo[0] = malloc(13);
strcpy(foo[0], "Testing this");
Естественно, вам понадобится free
память на более поздний срок, когда вы закончите с ней.
Ваш код вызывает так называемое неопределенное поведение .В принципе может произойти все что угодно, включая код, работающий так, как вы задумали.Если версия с char *foo[10]
работает так, как вы рассчитывали, это просто неудача.
Кстати, ваше определение main()
неверно.Это должно быть int main(void)
.