Присвоить строки массиву указателей - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Наверное вопрос глупый, но я оправдаюсь тем, что я новичек. Так вот: Есть массив указателей char *arr[5]; Из книжки по си я прочитал следующее: "Инициализация должна задаваться явно — либо статически, либо в программе.". То есть статистически - это char *arr[] = {"строка1", "строка2", "строка 4", "и т.д."}; Но я хочу присвоить в программе - то есть, мне нужно написать scanf("%s", &arr[0]), но это не канает. Помогите разобраться, спасибо!

Решение задачи: «Присвоить строки массиву указателей»

textual
Листинг программы
  1. int main(void)
  2. {
  3.   int i;
  4.   char *p[2];
  5.   p[0] = (char*)malloc(sizeof(char)*10);
  6.   p[1] = (char*)malloc(sizeof(char)*10);
  7.          
  8.   scanf("%s", p[0]);
  9.   scanf("%s", p[1]);
  10.          
  11.   for (i = 0; i < 2; i++)
  12.   {
  13.     char* tmp = p[i];
  14.     while (*tmp != '\0')
  15.         printf("%c", *(tmp++));
  16.   }
  17.            
  18.   free(p[0]);
  19.   free(p[1]);
  20.  
  21.   return 0;
  22. }

Объяснение кода листинга программы

В этом коде:

  1. Объявлен массив из двух указателей на char - p[2].
  2. Дважды вызывается malloc для выделения памяти под две строки по 10 символов.
  3. Дважды вызывается scanf для считывания двух строк по 10 символов в выделенную память.
  4. С помощью for цикла обходят оба указателя на char и с помощью while выводят на экран символы, пока не встретят нулевой символ.
  5. Выделенная память освобождается с помощью free.
  6. Программа возвращает 0, заканчивая свое выполнение.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы