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

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

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

Код к задаче: «Присвоить строки массиву указателей - C (СИ)»

textual
int main(void)
{
  int i;
  char *p[2];
  p[0] = (char*)malloc(sizeof(char)*10);
  p[1] = (char*)malloc(sizeof(char)*10);
          
  scanf("%s", p[0]);
  scanf("%s", p[1]);
          
  for (i = 0; i < 2; i++)
  {
    char* tmp = p[i];
    while (*tmp != '\0')
        printf("%c", *(tmp++));
  }
            
  free(p[0]);
  free(p[1]);
 
  return 0;
}

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


СОХРАНИТЬ ССЫЛКУ