Estou fazendo um exercício que lê três nomes e os organiza em ordem alfabética, no primeiro algoritmo que fiz, recebia um erro incomum de else sem um if prévio, então resolvi começar o algoritmo do zero. Consegui rodar, porém agora o programa não exibe o primeiro nome, no segundo ele exibe alguns caracteres estranhos e só exibe o terceiro corretamente. O que pode ser isso? Meu código:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL,"");
char nome1[30];
char nome2[30];
char nome3[30];
char P[30];
char S[30];
char T[30];
printf("Fale o primeiro nome: ");
fgets(nome1, 30, stdin);
printf("Fale o segundo nome: ");
fgets(nome2, 30, stdin);
printf("Fale o terceiro nome: ");
fgets(nome3, 30, stdin);
int pr = 0;
int se = 0;
int te = 0;
if(strcmp(nome1, nome2) > 0 && strcmp(nome1, nome3) > 0)
{
strcpy(P, nome1);
pr++;
}
else
{
if(strcmp(nome1, nome2) < 0 && strcmp(nome1, nome3) > 0 || strcmp(nome1, nome2) > 0 && strcmp(nome1, nome3) < 0)
{
strcpy(S, nome1);
se++;
}
else
{
if(strcmp(nome1, nome2) < 0 && strcmp(nome1, nome3) < 0)
{
strcpy(T, nome1);
te++;
}
else
{
if(pr == 0 && strcmp(nome2, nome3) > 0)
{
strcpy(P, nome2);
pr++;
}
else
{
if(pr > 0 && strcmp(nome2, nome3) > 0)
{
strcpy(S, nome2);
se++;
}
else
{
if(strcmp(nome2, nome1) < 0 && strcmp(nome2, nome3) < 0)
{
strcpy(T, nome2);
te++;
}
else
{
if(pr == 0)
{
strcpy(P, nome3);
pr++;
}
else
{
if(se == 0)
{
strcpy(S, nome3);
se++;
}
else
{
if(te == 0)
{
strcpy(T, nome3);
te++;
}
}
}
}
}
}
}
}
}
printf("Os nomes em ordem alfabética\n\n%s\n%s\n%s", P, S, T);
return 0;
}