Как вывести массив строк в Си?
Ваши ошибки.
1. Вы считываете строку куда попало. Надо выделить память, или сделать статический массив char s[3][40];
2. Обозначение для символа перевода строки — \n, с обратным слэшом.
3. *a = a[0].
У вас scanf("%s", a) ; от i не зависит. Не смущает? Также как и printf("%s/n", *a) ;
Ну и char *a[3] есть массив указателей на char, а вот куда эти указатели указывают, на какую память? Куда-то в космос... Где-то должна быть память, куда вы свои много-много char будете складывать. А уж как эту память выделить: статически, динамически... вам решать