Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fabio Berçot

Abrir um arquivo .txt vazio sem dar erro

Recommended Posts

Boa tarde

 

ao abrir o arquivo a seguir, o mesmo dá erro, quando anteriormente usei a opção do menu "EXCLUIR TUDO" deixando o arquivo .txt com 0kb. como posso fazer para nesta função, ele ler o arquivo, caso não esteja em branco, execute a função, se não, abra o menu principal sem armazenar nada na memoria.

 

vlw!!!!!

 

void abrir(void)

{

int i;

FILE *arq;

struct saluno tmp;

printf(">>> Abrir do arquivo...\n\n");

arq = fopen("cadastro.txt","r");

if (!arq)

{

printf("Erro ao abrir arquivo!\n");

return;

}

while(!feof(arq))

{

fscanf(arq, "%d%s%s%f%f%f%f%d%d", &i,tmp.nome,tmp.data,&tmp.p1,&tmp.p2,&tmp.exame,&tmp.media,&tmp.falta, &tmp.cod);

aluno.cod=tmp.cod;

strcpy(aluno.nome, tmp.nome );

strcpy(aluno.data, tmp.data);

aluno.p1 = tmp.p1;

aluno.p2 = tmp.p2;

aluno.exame = tmp.exame;

aluno.media=tmp.media;

aluno.falta=tmp.falta;

}

fclose(arq);

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o erro apresentado?Aparentemente seu código está correto.Não entendi essa parte.

como posso fazer para nesta função, ele ler o arquivo, caso não esteja em branco, execute a função, se não, abra o menu principal sem armazenar nada na memoria.

que função é essa?para verificar se o arquivo está vazio voce pode fazer a leitura de uma linhacom fgets e com feof(arq) verificar se o arquivo está vazio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom seria isso mesmo que preciso Kandrade tipo como verificar por exemplo uma linha(assim como você flw), se estiver vazio, sair da função.quando falei de não retornar nada... seria isso... pois o fscanf manda os dados do arquivo .TXT para memoria, correto...rsrsrsrse possivel mandar a codificação, aqui mesmo...rsagradeçido!!!!att.. Fábio Berçot

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce pode fazer assim:

 

char c;	c = getc(arq); /* Lê o primeiro caracter */	if (feof(arq))		/* Verifica se o caracter lido é o fim de arquivo */	{			printf("O arquivo está vazio\n"); 		exit(0);	}	rewind (arq); /* Isso volta o ponteiro do arquivo para o inícion */

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.