Ir ao conteúdo
  • Cadastre-se
guhbrj

C C - função fwrite - Problema com variáveis do tipo int

Posts recomendados

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

@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 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!