Задать вопрос
@lxr

Как вывести массив строк в Си?

Доброго времени суток.
Пытаюсь сначала ввести массив строк, потом вывести на экран.
char *a[3];

//этот кусок вроде работает
for (int i=0; i<3; >i++) {
    scanf("%s", a) ;
} 

 //на этом моменте sigmentation fault
for (int i=0; i<3; >i++) {
    printf("%s/n", *a) ;
}


Понимаю, что что - то не правильно делаю, но мне кажется второй кусок кода логичным :

printf("%s/n", *a) ; //вывести строку.

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

Войдите, чтобы написать ответ

Похожие вопросы