Segmentation fault - qual o problema que o ocasiona neste codigo

Boa tarde pessoal , estou escrevendo esse codigo em C ->

#include <stdio.h>

int main(void)
{
char url[]=“cadastro.txt”;
char ch[500];
char *array[500] ;
nt i=0 ;
FILE *arq;

arq = fopen(url, "r");
if(arq == NULL)
    printf("Erro, nao foi possivel abrir o arquivo\n");
else
      while((fgets(ch , 500 ,arq)) != NULL);
            {
               
               
               strcpy(array[i] ,ch);
               printf("%s", array[i]);
               i++;  
             } 
    
     
    fclose(arq);


     printf("%s\n", array[0]);

          
return 0;

}

A minha ideia e salvar cada linha do arquivo txt em uma posicao do array , so que ele acusa o erro do titulo , que como ja li e um problema de memoria , estou usando um ponteiro… pode estar ai o problema , porem nao tenho conhecimento suficiente para saber o que esta errado , peco ajuda a vcs; estou usando o ubuntu e compilando com o gcc .

Obrigado