Enviado em 05/04/2016 - 17:47h 
		jacksonterceiro escreveu:
Aqui está uma parte do código
Veja que legal: você imprime uma mensagem dizendo que o arquivo não existe mas, mesmo assim, continua a linha seguinte a executar como se ele existisse!
                             while(1)  
Epa!  Você está testando o valor de 
e  antes de o definir.  Assim, o se programa pode abortar o loop, se calhar de, por acaso, o valor inicial de 
e  for convertido em 
EOF .
Outro erro nesse mesmo trecho: 
c  e 
e  deveriam ter sido declarados como 
int , não como 
char , pois a função 
getc () retorna 
int , e o valor 
EOF  é uma constante inteira fora da faixa de 0 a 255 (ou -128 a 127).  Se você usar 
char  para essas variáveis, suas comparações com 
EOF  vão sempre ser problemáticas, caindo em um dos dois seguintes casos:
1) Se 
char  for sem sinal (i.e. tiver valores entre 0 e 255), na hora de comparar com a constante inteira 
EOF  (que normalmente vale -1), a comparação será sempre falsa, mesmo que você tenha chegado ao final do arquivo e 
getc () tenha tentado lhe sinalizar isso.
2) Se 
char  for com sinal (como é na maioria dos nossos PCs, o que implica ter valores que vão de -128 a 127), fica impossível distinguir 
EOF  do caráter com valor 255 (que nos sistemas de codificação ISO-8859-1, ISO-8859-15 e Windows-1252, usados para líguas do Oeste da Europa, corresponde ao símbolo “
ÿ ”, ou “Y minúsculo com trema”).  Isso acontece porque a atribuição do valor 255 a um 
char  com sinal o converte aquele 255 para -1, o qual, na hora de ser comparado com um inteiro com sinal (que é o caso de 
EOF ), é convertido para a representação inteira de -1, e não de volta para 255.
                                printf("Letras_Contatos Cadastrados: %c\n", c);  
Preciso que quando ele ache um contato com a letra J ele imprima no terminal toda a linha contendo o nome e o telefone. E em seguida continue procurando para ver se achar mais algum contato com a letra J. 
E por que você, em vez de ler caráter a caráter, não lê de linha em linha?