Попытка получить случайный элемент из массива

#c

Вопрос:

Пытаясь получить случайный элемент из 2d-массива под названием фрукты, я не уверен, что параметр состояния printf с %c правильный, так как он просто печатает символ? я не знаю, что еще использовать. Любая помощь приветствуется Правка: Попытка получить случайное слово вместо случайной буквы из массива фруктов, извините, если неясно.

 #include lt;stdio.hgt;  int main() {  srand(time(NULL));   int isSpin;  char random;  printf("To spin the wheel input 1n");  scanf("%d", amp;isSpin);   char fruits[4][10] = {"bell", "orange", "cherry", "horseshoe"};   if (isSpin == 1)  {  random = fruits[rand()%4];  printf("%c", random);  }  else  {   printf("You didn't spin");  } }  

Комментарии:

1. Вы всегда должны проверять возвращаемое значение scanf (не ваша непосредственная проблема). И вместо 4 вы могли sizeof fruits / sizeof *fruits бы сделать это более общим.

Ответ №1:

 char random;  /* ... */  random = fruits[rand()%4]; printf("%c", random);  

random присваивается указателем fruits[rand()%4] , преобразованным в целое число. Это определенно не то, что вы пытаетесь архивировать.

ты хочешь

 int word = rand()%4; random = fruits[word][rand() % (strlen(fruits[word]) - 1)];  

Да, я просто пытаюсь напечатать одну из 4 строк случайным образом, а не единственный символ, извините, если неясно

Почему об этом не идет речи?

 char *random;  /* ... */  random = fruits[rand()%4]; printf("%sn", random);  

Комментарии:

1. голосовали — это получает случайный символ из одной из четырех строк, выбранных случайным образом. Я думаю, что OP хочет random как a char* , а затем случайным образом назначает его одной из четырех строк, но из вопроса неясно, ИМХО

2. @MortenJensen » trying to get a random element from the 2d array » . Этот массив содержит char элементы типа. В вопросе нет ничего, указывающего на то, что он хочет чего-то другого

3. Да, я просто пытаюсь напечатать одну из 4 строк случайным образом, а не единственный символ, извините, если неясно

4. @0___________ Я согласен, что вопрос/был неясен. Я истолковал намерения ОП. Также с %c помощью-спецификатора я полностью понимаю, почему вы сначала ответили так, как ответили (до редактирования). Никакой критики вообще не подразумевалось. Просто хотел приблизиться к решению для OP

Ответ №2:

Для печати строки необходимо использовать %s

printf("%s", random);

Комментарии:

1. Это вызывает неопределенное поведение и не будет работать

2. Вы также должны указать на изменение char random -gt; gt; char *random .