Ajuda em C

[code] #include<stdio.h> //entrada e saida de arquivos
#include<stdlib.h>//biblioteca do sistema
#include<conio.h>//biblioteca do getch()
#include<string.h>//biblioteca para ler string

struct cadastro
{
char nome[30];
int ra;

};

int main(){

struct cadastro aluno;
FILE *trabalho; // arquivo txt
int op, procura;
char nomeArquivo[14] = "cadastro2.txt";
char caracSeparador[] = " ";


do{

	system("cls");
    printf("\t\t=== Faculdade Clock ===\n\n");
    printf("1. Incluir Aluno\n");
    printf("2. Alunos Matriculados\n");
    printf("3. Consultar Aluno\n");
    printf("Qualquer outra tecla para sair.\n");
    printf("\nDigite sua opcao: ");
    scanf("%d",&op);
    system("cls");
    
    switch(op){
    
             // cadastro 
             case 1:
                  
                  printf("Nome do aluno: ");
                  fflush(stdin);
                  gets(aluno.nome);
                  
                  printf("Informe o RA do aluno: ");
                  fflush(stdin);
                  scanf("%d",&aluno.ra); 
                  
                  // se der erro na abertura do arquivo
                  if((trabalho = fopen(nomeArquivo, "at")) == NULL){
                      printf("Erro na abertura do arquivo %s.\n", nomeArquivo);
                      system("pause"); /* para WINDOWNS */
                      exit(-1);  /* abandona a execucao do programa */
                  
                  } else {
                      
                      fprintf(trabalho, "%s", aluno.nome);
                      fprintf(trabalho, "%s", caracSeparador);
                      fprintf(trabalho, "%d", aluno.ra);
                      fprintf(trabalho, "%s", caracSeparador);
                     
                     

                      // fecha o arquivo
                      fclose(trabalho);
                  }
                  break;
    
             // relatorio
             case 2:
                  
                if((trabalho = fopen(nomeArquivo, "rt")) == NULL){
                
                    printf("Erro na abertura do arquivo %s.\n", nomeArquivo);
                    system("pause"); // para WINDOWNS
                    exit(-1);  // abandona a execucao do programa
                
                } else {
                
                    char linha[100];
                    int i = 1;
                            
                    printf("Aluno Matriculados:\n\n"); 
                    
                    for (; !feof(trabalho); i++) {
                        if (fgets(linha, 100, trabalho)){  // Se foi possível ler
                         
                           printf("%s", linha);
                               
                        }// fecha if
                    }// fecha for
                    
                    fclose(trabalho);
                    printf("\n\n\n");
                    system("pause");
                }
                break;
             
             case 3:
                   if((trabalho = fopen(nomeArquivo, "rt")) == NULL){
                
                    printf("Erro na abertura do arquivo %s.\n", nomeArquivo);
                    system("pause"); // para WINDOWNS
                    exit(-1);  // abandona a execucao do programa
                
                   } else { 
                   printf("Informe o RA do aluno\n");
                   scanf("%d",&procura);
                     
                     while (fread(&aluno,sizeof(aluno),1,trabalho) == 1){

                     if (aluno.ra == procura){
                        printf("nome  : %s\n",aluno.nome);
                       }
            }
            fclose(trabalho);
                     
                      //if(procura == aluno.ra){
                     // fprintf(trabalho, "%s", aluno.nome);
                     // fprintf(trabalho, "%s", caracSeparador);           
                     // }
                       
                   }//fecha o else
             
             
             default:
                     printf("\n\t !!! Faculdade Clock !!!\n\n\n");
                     system("pause");
             
    } // fecha switch
     
} while(op == 1 || op == 2);

//system("pause");
return 0;	

}
[/code]

Deixe-me ver…

Você está jogando tudo num txt, ok?
Você já olhou se está tudo sendo salvo de maneira correta, nesse txt? Que esse RA e nome realmente foi gravado?

Se sim, o problema é na hora da consulta…

Estou um pouco enferrujado em C mas, o que você tentou fazer aqui?
Lembro que quando fazia buscas em txt, eu procurava linha por linha…

O que esse while faz?
Na comparação: aluno.ra == procura , quando que a variável ‘aluno.ra’ recebe o valor certo do txt?

     scanf("%d",&procura);  
                           
                         while (fread(&aluno,sizeof(aluno),1,trabalho) == 1){  
  
                         if (aluno.ra == procura){  
                            printf("nome  : %s\n",aluno.nome);  
                           } 

fread = arquivo binario
fgets = arquivo texto

Voce ta gravando como texto e tentando ler como binario…

Falta um break case 3 …
quando op = 3 seu programa tambem vai encerrar, por isso depois de uma tentativa
de consulta o programa fecha.

Dica : use funçoes, nao coloque td no main, fazendo isso vai ficar mais facil corrigir erros.

De modo geral, em C, se um método tiver mais de 30/40 linhas, você está fazendo algo errado.
Não programe no método “Aurora” (ou seja, “orientado a linguiça”)