Ir para conteúdo
Fórum Script Brasil
  • 0

Salvando em binario.


Dobrowolsky

Pergunta

Gente é o seguinte.

estou fazendo um trabalho e um dos exercicios é bem simples, preciso apenas gravar em um arquivo do tipo binario todos os numeros impares (numeros inteiros claro) ate 20.

bom isso é muito simples fiz o codigo e o programa esta funcionando corratamente. minha unica dificuldade esta sendo em salvar o arquivo como binario.

se alguém puder ajudar...

segue abaixo o codigo

#include <stdio.h>

#include <iostream>

using namespace std;

int main (void)

{

FILE *arq;

int binimp;

arq=fopen("BinarioImpar.txt", "w");

for(binimp=1; binimp<20; binimp=binimp+2)

{

fprintf(arq, "%d \t",binimp);

}

fclose(arq);

printf("Arquivo criado com sucesso.(Enter para finalizar)\n");

system("pause");

return 0;

}

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

O problema está sendo que o código funciona mas está gravando em modo texto. Porque você fez assim, este formato com o tab é o que deve ser?

Caso você salve o arquivo em formato binário não conseguirá visualizar o seu conteúdo, apenas um outro programa é que conseguirá ler. É isto mesmo que você quer?

Para utilizar arquivos binários você precisa abri-lo com a flag "wb" ao invés de "w". Além disso você grava os dados com a função fwrite.

Explique exatamente se é isso que é preciso e qual o formato exato do arquivo.

Link para o comentário
Compartilhar em outros sites

  • 0

e deve haver o tab sim porque o proximo programa precisa ler todos os numeros saparadamente e depois soma-los e imrpimi-los em decimal na tela.

nossa cara vlw é exatamente isso q estou precisando, eu não preciso ler o arquivo não. estou fazendo outro programa para fazer esta funçao de ler o arquivo.

eu tenho uma certa dificuldade com essa parte de salvar e ler arquivos (acabei de aprender e aprendi muito mal tb)

dai se você puder me dar um exemplo simples de como utilizar esse fwirite

muito obrigado pela ajuda

ainda esta noite terei mais duvidas ehehe

Editado por Dobrowolsky
Link para o comentário
Compartilhar em outros sites

  • 0

Ótimo, eu espero poder te ajudar! Mas o jogo do Corinthians vai começar então não vou ficar aqui direto... :)

Realmente acesso a arquivos é algo um pouco complicado mas com um pouco de experiência você já vai entender.

O que acontece agora é que eu não entendi exatamente o que você precisa pois em um arquivo binário não vai adiantar muito gravar o tab como marcador.

Este link explica muito bem o uso de fwrite: http://www.cplusplus.com/reference/clibrar...dio/fwrite.html

Este site possui muitas outras funções e serve como referência, aproveite! :)

Link para o comentário
Compartilhar em outros sites

  • 0

Então: o problema com marcadores em arquivos binários é que o tab é um dado como outro qualquer e tem o seu valor. Se uma variável tem o mesmo valor não dá para saber. Em um arquivo binário como no seu caso não precisa de nenhum marcador, apenas a gravação direta e usando a mesma forma para ler os dados de volta.

Assim o fprintf poderia ser substituída pelo código abaixo:

fwrite(&binimp, sizeof(binimp), 1, arq);

Nos argumentos estou passando o endereço da variável que deve ser gravada (&binimp), o seu tamanho (sizeof(binimp)), 1 indicando que apenas uma variável desta deve ser gravada e o ponteiro para o arquivo.

Este terceiro parâmetro (1) seria usado onde temos um vetor para ser gravado, por exemplo.

Link para o comentário
Compartilhar em outros sites

  • 0

hm entendi +-, tenho um pouco de dificuldade com alguns termos tb porque meu professor burramente utiliza algumas analogias ridiculas q so faz dificultar na hora dos estudos... + eu vou tentar aki e vou ver como fica

e esse "sizeof" como eu utilizo ele?

vlw ^^

opa consegui o primeiro programa ficou assim (salvar em um arquivo do tp binario os numeros impares de 0 a 20)

#include <stdio.h>
#include <iostream>
using namespace std;

int main (void)
{
    FILE *arq;
    int binimp;
    
    arq=fopen("BinarioImpar.txt", "wb");
    for(binimp=1; binimp<20; binimp=binimp+2)
    {
                  fwrite(&binimp, sizeof(binimp), 1, arq);
    }
    fclose(arq);
    printf("Arquivo criado com sucesso.(Enter para finalizar)\n");
    system("pause");
    return 0;
}
o segundo programa (ler o arquivo gerado no programa anterior e somar todos os elementos)
#include <stdio.h>
#include <iostream>
using namespace std;

int main(void)
{
    FILE *arq;
    int soma, i, b, vet1[10]; 
    
    arq=fopen("BinarioImpar.txt", "rb");
    
    for(i=0; i<10; i++)
    {
             vet1[i]=0;
    }
    for(i=0; i<10; i++)
    {
             fread(&vet1[i], sizeof(vet1[i]), 1, arq);
    }
    b=vet1[0]+vet1[1];
    for(i=2; i<10; i++)
    {
             b=b+vet1[i];
    }
    cout<<"\nA soma dos valores do programa anterior e: "<<b<<"\n";
    system("pause");
    return 0;
}

muito obrigado pela ajuda ^^

e já estou com outra duvida, tem alguma funçao q conte quantas vogais e quantas consoantes existe em uma frase lida?

se não tem vou ter de fazer no if else ne? ow tem outra forma mais facil?

Editado por Dobrowolsky
Link para o comentário
Compartilhar em outros sites

  • 0

O sizeof retorna o tamanho em bytes que uma variável está ocupando em memória. Assim, como a função fwrite recebe o número de bytes a serem gravados a partir de um certo endereço de memória, precisamos passar como parâmetro o retorno de sizeof.

Se eu compliquei mais do que expliquei me avise que eu tento melhorar! :)

Sobre as consoantes e vogais eu vi que você criou um tópico específico assim respondo lá que é melhor, ok?

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...