Ir ao conteúdo

Criando arquivos em c, mas ele nao aparece


marcel0.mf

Posts recomendados

Postado

Utilizo o dev c++ Estou com um problema porque quando rodo qualquer programa para criar arquivo, parece que ele cria e grava os dados no arquivo com sucesso, mas quando fecho nao consigo chamar o arquivo de novo.

O mesmo programa roda perfeitamente na casa dos meus colegas e em no computador da minha mãe, mas no meu notebook tem esse problema. O que faço? o meu professor falou que poderia estar na pasta do compilador mas nao achei, preciso estudar para as provas mas sem fazer os programas fica difícil.

Segue um exemplo de programa que abre, mas quando fecha não consegue chamar mais o arquivo:

/* Usando fwrite para escrever dados num arquivo */

#include <stdio.h>
#include <stdlib.h>
main(){
char teste[100];

//defini um arquivo//
FILE *arquivo;

//dado estruturado//
struct dados{
char nome[100];
char dep[100];
float sal;
} func,recebe;
//fim do dado estruturado

printf("insira nome do funcionario:");
scanf("%s",&teste);

//abrindo arquivo//
if((arquivo = fopen("funcionarios.dat","wb")) == NULL){
printf("Erro ao abrir arquivo!!!\n\n");
exit(1);
}
else{

//preenchendo o dado estruturado//

while(strcmp(teste,"fim")!=0){

strcpy(func.nome,teste);
fwrite(&func.nome,sizeof(char),100,arquivo);
printf("Escreva o departamento: ");
scanf("%s",&func.dep);
fwrite(&func.dep,sizeof(char),100,arquivo);
printf("Escreva o salario: ");
scanf("%f",&func.sal);
fwrite(&func.sal,sizeof(float),1,arquivo);
printf("\n\nInsira nome do funcionario: ");
scanf("%s",&teste);

}
//numeros de dados estruturados preeenchidos//

printf("\n\n---------------conferindo dados armazenados-------------------\n\n");

fclose(arquivo);
if((arquivo = fopen("funcionarios.dat","rb")) == NULL){
printf("Erro ao abrir arquivo!!!\n\n");
exit(1);
}
else{
fread(&recebe,sizeof(struct dados),1,arquivo);
while(feof(arquivo)==0){

printf("\nNOME = %s",recebe.nome);
printf("\nDEPARTAMENTO = %s ",recebe.dep);
printf("\nSALARIO = %.2f \n",recebe.sal);
fread(&recebe,sizeof(struct dados),1,arquivo);

}
//armazenei corretamente no struct dados func//

}
}
getch();
}

e esse Outro para chamar o arquivo:

/* Usando fread para ler dados de um arquivo sobre os funcionarios */
#include <stdio.h>
#include <stdlib.h>
int main(){
int armazenamento;
int i;
FILE *arquivo;

//dado estruturado//
struct dados{
char nome[100];
char dep[100];
float sal;
}recebe;
//fim do dado estruturado//

//abrindo arquivo fazendo conexao com o arquivo de funcionarios//
if((arquivo = fopen("funcionarios.dat","rb")) == NULL){
printf("Erro ao abrir arquivo!!!\n\n");
exit(1);
}

else{
fread(&recebe,sizeof(struct dados),1,arquivo);
while(feof(arquivo)==0){

printf("\n NOME = %s",recebe.nome);
printf("\nDEPARTAMENTO = %s ",recebe.dep);
printf("\nSALARIO = %.2f \n",recebe.sal);
fread(&recebe,sizeof(struct dados),1,arquivo);

}
fclose(arquivo);
getch();
return(0);
}
}

Postado

Veja esta linha do primeiro código GbhmuXl.gif:


if((arquivo = fopen("funcionarios.dat","rb")) == NULL)

Quando ela é processada, a função fopen, que requer o fclose depois, também é F5Rua4D.gif.

Porém, não há ocorrência de nenhuma chamada da função fclose após esse ponto do programa.

Espero ter ajudado GbhmuXl.gif.

  • 2 semanas depois...
Postado

Pior que eu botei sim, põe fclose(arquivo); no ctrl f

//numeros de dados estruturados preeenchidos//

printf("\n\n---------------conferindo dados armazenados-------------------\n\n");

fclose(arquivo);

Postado
Pior que eu botei sim, põe fclose(arquivo); no ctrl f

//numeros de dados estruturados preeenchidos//

printf("\n\n---------------conferindo dados armazenados-------------------\n\n");

fclose(arquivo);

Isso está localizado acima da linha que mencionei, não abaixo F5Rua4D.gif.

Espero ter ajudado GbhmuXl.gif.

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!