Olá pessoal.  Estou com um problemão (ao menos pra mim)... Estou desenvolvendo um programa com a finalidade de gerar códigos aleatórios para mim, resumidamente as combinações disponíveis nele podem ser: A(1,2) B(1,2,3) C(2,3,4) D(3,4,5).  Ou seja, os códigos que o programa pode gerar pra mim variam entre A1 B3 C2 A3; A2 B1 B1 A1 D5.  Mas eu preciso salvar estes códigos em um controle de informações (este consegui fazer).  Porém preciso que o programa gere esses códigos sem ambiguidade, ou seja, ele não pode fornecer o mesmo código 2 vezes, mas agora não sei como fazer para que ele leia este arquivo e então "procure" alguma codificação semelhante.  Alguém pode me ajudar?  Segue um escopo do script (ele está poluído porque não utilizei funções em ações repetidas).   #include <stdio.h>
#include <string.h>
int main ()
{
int perfil;
FILE *dados;
while(perfil!=0){
printf("\nDigite o perfil da chave ou 0 para sair.\n\n");
scanf("%d", &perfil);
if(perfil!=0){
dados = fopen("mestragens.txt", "a+");
srand(time(NULL));
char s1[10];
char s2[10];
char s3[10];
char s4[10];
int letra1 = rand()%4 + 1;
        if(letra1==1){
            strcpy(s1,"A");}
        if(letra1==2){
            strcpy(s1,"B");}
        if(letra1==3){
            strcpy(s1,"C");}
        if(letra1==4){
            strcpy(s1,"D");}
int letra2 = rand()%4 + 1;
        if(letra2==1){
            strcpy(s2,"A");}
        if(letra2==2){
            strcpy(s2,"B");}
        if(letra2==3){
            strcpy(s2,"C");}
        if(letra2==4){
            strcpy(s2,"D");}
int letra3 = rand()%4 + 1;
        if(letra3==1){
            strcpy(s3,"A");}
        if(letra3==2){
            strcpy(s3,"B");}
        if(letra3==3){
            strcpy(s3,"C");}
        if(letra3==4){
            strcpy(s3,"D");}
int letra4 = rand()%4 + 1;
        if(letra4==1){
            strcpy(s4,"A");}
        if(letra4==2){
            strcpy(s4,"B");}
        if(letra4==3){
            strcpy(s4,"C");}
        if(letra4==4){
            strcpy(s4,"D");}
int num1;
if(letra1==1){
    num1 = rand()%2+1;}
if(letra1==2){
    num1 = rand()%3+1;}
if(letra1==3){
    num1 = rand()%3+2;}
if(letra1==4){
    num1 = rand()%3+3;}
int num2;
if(letra2==1){
    num2 = rand()%2+1;}
if(letra2==2){
    num2 = rand()%3+1;}
if(letra2==3){
    num2 = rand()%3+2;}
if(letra2==4){
    num2 = rand()%3+3;}
int num3;
if(letra3==1){
    num3 = rand()%2+1;}
if(letra3==2){
    num3 = rand()%3+1;}
if(letra3==3){
    num3 = rand()%3+2;}
if(letra3==4){
    num3 = rand()%3+3;}
int num4;
if(letra4==1){
    num4 = rand()%2+1;}
if(letra4==2){
    num4 = rand()%3+1;}
if(letra4==3){
    num4 = rand()%3+2;}
if(letra4==4){
if(perfil==113){
//---------------
printf("Z0 %s%d %s%d %s%d %s%d \n\nZ%s%s%s%s 0%d%d%d%d\n\n", s1, num1, s2, num2, s3, num3, s4, num4, s1, s2, s3, s4, num1, num2, num3, num4);
        fprintf(dados,"Z%s%s%s%s 0%d%d%d%d\n", s1, s2, s3, s4, num1, num2, num3, num4);}
        else{
            if(perfil==236){
//--------------
printf("\n%s%d Z0 %s%d %s%d %s%d \n\n%sZ%s%s%s %d0%d%d%d\n\n", s1, num1, s2, num2, s3, num3, s4, num4, s1, s2, s3, s4, num1, num2, num3, num4);}
                else{printf("\ndigite um perfil correto, 113 ou 236.\n\n");}
            }
}
else{}
}
return 0;
}