Ir ao conteúdo

Posts recomendados

Postado

Pessoal, boa tarde !

Estou estudando a função fwrite e estou com algumas dúvidas. Vi em uma literatura muito antiga que o modo de abertura do arquivo a ser gravado deve ser preferencialmente binário "wb", por conta do tamanho dos dados, tendo em vista a otimização do armazenamento no disco, coisa que não existe mais hoje em dia. As minhas dúvidas são as seguintes:

 

1 - É possível gravar dados com a função fwrite em modo texto (a, a+, w ... etc) ? Tem alguma incompatibilidade ?

2 - O que tem de errado no código abaixo:

 

	void cadProd(struct itens produtos)
	{
	
		struct itens *aux;
		FILE *arquivo;
		int lim = sizeof(produtos);
		arquivo = fopen("database.dat", "a");
		
		aux = malloc(sizeof(produtos));
		
		printf("Entre com o código: ");
		scanf("%d", &aux->cod);
		fflush(stdin);
		printf("Entre com a descrição do produto: ");
		gets(aux->desc);
		fflush(stdin);
		printf("Entre com a data de validade (ex.: 13/05/1888) : ");
		gets(aux->dataVal);
		fflush(stdin);
		printf("Entre com a quantidade atual em estoque: ");
		scanf("%d", &aux->quantAtu);
		fflush(stdin);
		printf("Entre com a quantidade mínima em estoque: ");
		scanf("%d", &aux->quantMin);
		fflush(stdin);
		
		fwrite(aux, lim, 1, arquivo);
		fclose(arquivo);
	}

 

//declaração da struct

struct itens{
int cod, quantAtu, quantMin;
char desc[20], dataVal[11]; //formato data dd/mm/AAAA
	
};

 

ao executar a função e gravar no arquivo, verifiquei que os dados ficaram gravados com codificação conforme imagem abaixo: 

 

 

 

print_encoding.PNG.a0faf5f5ce7788e9e11322c3b9b96e41.PNG

as entradas foram 

cod :10

desc: aaaa

quantAtu: 100

quantMin: 10

 

Alguém pode ajudar ?

obrigado !

  • Curtir 1
Postado

@guhbrj    para gravar texto é melhor usar o comando fprintf mesmo ,  pois o fwrite é para binário mesmo e no arquivo gravado fica com esses caracteres assim mesmo .    mas se você postar essa dúvida  lá no tópico de c/c++  você terá melhores respostas   .

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!