В вашем коде есть две основные проблемы.
1.
С
movie = movielist[rand() % 25];
вы пытаетесь назначить movie
(массив из 15 char
, тип char [15]
) указателем на массив 30 char
(тип char (*)[30]
). Это недопустимо в C. Вы не можете назначать массивы.
Поскольку вы не хотите модифицировать / изменять заголовки / строки mov ie в программе, вам не нужен двумерный массив для movielist
и массив для movie
.
Используйте массив указателей для movielist
, который указывает на строковые литералы и указатель на movie
.
Указатель move
, который вы назначаете затем значение одного из указателей в movielist
.
2.
rand()
требуется семя с srand()
. Без этого rand()
не будет работать должным образом. Но вы забыли об этом в своем коде.
Обычный способ - предоставить начальное число, зависящее от времени процессора.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h> // for the time seed.
int main (void)
{
char const * movie;
char const * const movielist[] = {
"thalaiva","aruvi","sarkar","visvasam","veeram",
"mersal","bigil","kaithi","mahanadhi","papanasam",
"vishwaroopam","padayappa","thadam","indian",
"petta","kaala","psycho","comali","bahubali",
"saaho","enthiran","vettai","asuraguru","penguin",
"cocktai"
};
// initialize random seed.
srand(time(NULL));
movie = movielist[rand() % 25];
printf("%s", movie);
}
Примечание:
void main()
не соответствует стандарту C. Используйте int main (void)
.