#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
как achar*
, а затем случайным образом назначает его одной из четырех строк, но из вопроса неясно, ИМХО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
.