Ordenando endereços - C

Boa tarde galera estou tentando ordenar endereços para um trabalho escolar porém estou tendo problemas.
Segue meu código:

if(strcmp(tipo, "codigo") == 0) { for (i = 0; i < lista->Quantidade; i++) { for(j=0; j< lista->Quantidade; j++) { if(lista->Registros[i].codigo < lista->Registros[j].codigo) { listaOrdenar->Registros[i] = lista->Registros[i]; lista->Registros[i] = lista->Registros[j]; lista->Registros[j] = listaOrdenar->Registros[i]; } } } for (i = 0; i < lista->Quantidade; i++) { printf("-------------------------------------------------------------\n"); printf("codigo:\t%d\n\n", lista->Registros[i].codigo); printf("endereco: %s\n\n", lista->Registros[i].endereco); printf("tipo:\t%s\n\n", lista->Registros[i].tipo); } printf("-------------------------------------------------------------\n"); } if(strcmp(tipo, "endereco") == 0) { for (i = 0; i < lista->Quantidade; i++) { for(j=0; j< lista->Quantidade; j++) { int teste = strcmp(lista->Registros[i].endereco,lista->Registros[j].endereco); printf("teste: %d", teste); system("pause"); if(strcmp(lista->Registros[i].endereco,lista->Registros[j].endereco) > 0 ) { listaOrdenar->Registros[i] = lista->Registros[i]; lista->Registros[i] = lista->Registros[j]; lista->Registros[j] = listaOrdenar->Registros[i]; } } } for (i = 0; i < lista->Quantidade; i++) { printf("-------------------------------------------------------------\n"); printf("codigo:\t%d\n\n", lista->Registros[i].codigo); printf("endereco: %s\n\n", lista->Registros[i].endereco); printf("tipo:\t%s\n\n", lista->Registros[i].tipo); } printf("-------------------------------------------------------------\n"); }

O problema que se eu executar e escolher a opção “endereco” o prompt trava e da a mensagem “Não respondendo”.
Os endereços vão ser cadastrados assim:

São somente exemplos:

  • Rua teste1
  • Rua teste3
  • Rua teste2

Cadastrando somente

  • teste1
  • teste3
  • teste2

O programa ordena corretamente sem problemas. Alguma luz?