fopen e gerenciamento de arquivos binarios

1. fopen e gerenciamento de arquivos binarios

Thierry
thierryvdb

(usa Fedora)

Enviado em 26/03/2008 - 10:31h

Bom dia galera estou com a seguinte duvida
como faço para permitir usuario a inserir informacoes no arquivo quando utiliando o fopen?
Ex: usuario tem que digitar nome, endereco e telefone e armazenar isto no arquivo.
Valeu galera.


  


2. Re: fopen e gerenciamento de arquivos binarios

Andi
upc0d3

(usa Gentoo)

Enviado em 26/03/2008 - 11:42h

cara, faz o seguinte, faz a leitura dos dados, armazena em variveis, e depois passa por parametro para o comando fopen();





3. cara

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 26/03/2008 - 11:43h

tem mto exemplo na net sobre isso, mas para escrever no arquivo em c você pode usar fprintf e no C++ o operador >> ou << ex: arquivo << string.


4. exemplos

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 26/03/2008 - 11:49h

exemplo pratico c++:
ofstream outFile;
outFile.open("arquivo", std::ios_base::out | std::ios_base::app);
outFile << "linha dos dados";
outFile.close();

exemplo pratico c:
char * string = (char *) malloc(sizeof(char) * 10);
strcpy(string, "Teste");
FILE * outFile = fopen("teste.txt", "w");
fprintf(outFile, "conteudo: %s", string);
fclose(outFile);




5. entao

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 26/03/2008 - 11:58h

para arquivos binários vc troca o "w" no fopen para "wb", porém ai terá de trabalhar um pouco diferente, depende a maneira que quer armazenar, mas pode criar estruturas e jogar estas para o arquivo. Pode também indexar o conteudo. Ja entra em um campo mais complexo, e não sei se somente procurando vai achar algo pronto, você tera que unir alguns conceitos para bolar um algoritimo realmente bom.


6. complexo

Airon Osorio
41r0n

(usa Conectiva)

Enviado em 10/10/2008 - 21:29h

vc poderia informar o q cada elemento representa aew!
OBS: procurei no Google mas só daum termos técnicos.


7. Re: fopen e gerenciamento de arquivos binarios

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 11/10/2008 - 00:01h

Cara, vc está precisando de um livro ou apostila de C/C++

exemplo pratico c++:
ofstream outFile; // declara a variável autFile do tipo ofstream, classe "para manipulação de arquivo"

outFile.open("arquivo", std::ios_base::out | std::ios_base::app); //abre o arquivo (std::ios_base::out - para escrita; std::ios_base::app - append, inclui no final do arquivo)
outFile << "linha dos dados"; // insere a string "linha doa dados"
outFile.close(); // fecha o arquivo

exemplo pratico c:
char * string = (char *) malloc(sizeof(char) * 10); // define a variável string como um poteiro de caracter e já aloca umtamanho de 10 x o tamanho de um cracter, ou seja 10 bytes
strcpy(string, "Teste"); //copia a string "Teste" para a variável string

FILE * outFile = fopen("teste.txt", "w"); // define a variável outFile como um ponteiro de FILE, tipo para manipulação de arquivo. Armazena na realidade uma espécie de Handle do arquivo e abre o arquivo para escrita
fprintf(outFile, "conteudo: %s", string); // insere a string "conteudo: Teste" no arquivo
fclose(outFile); //fecha o arquivo



8. Re: fopen e gerenciamento de arquivos binarios

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 11/10/2008 - 02:08h

mas acho que o que você quer é +- isso:


/* teste.c */

#include <stdio.h>


typedef struct Taluno
{
char nome[20];
int idade;
} Taluno;

Taluno aluno, raluno;

int main(void)
{
aluno.nome[0] = 'F';
aluno.nome[1] = 'u';
aluno.nome[2] = 'l';
aluno.nome[3] = 'a';
aluno.nome[4] = 'n';
aluno.nome[5] = 'o';
aluno.nome[6] = '\ 0';

/* pode substituir por strcpy eu fiz dessa forma apenas para ficar mais visível */

aluno.idade = 10;

FILE *file;

if (!(file=fopen("teste.txt","w+"))) return 0;

fwrite (&aluno, 1, sizeof (Taluno), file);

close (file);


printf ("precione qualquer <ENTER> para continuar ...\n");
getchar();

FILE *filer;

if (!(filer=fopen("teste.bkp","r"))) return 0;

long ret;

ret = fread (&raluno, 1,sizeof (Taluno), filer);

if (ret > 0)
{
printf ("Nome: %s\nidade: %d anos\n", raluno.nome, raluno.idade);
}

close (filer);
return 1;
}



9. Re: fopen e gerenciamento de arquivos binarios

Airon Osorio
41r0n

(usa Conectiva)

Enviado em 12/10/2008 - 17:28h

cara ajudo muito....
tenho várias apostilas aki mas nenhuma fala a lingua do iniciante...
vlw aew!!!

quero mostrar a vcs o que eu tinha em mente...
na minha faculdade tenho q fazer pontos de atividades complementares e minha coordenadora só aceita coisas criativas então está aew o q eu fiz:

#include<windows.h>
#include<conio.h>
#include<stdio.h>

main(){

system("color 4f");

int num;
SetConsoleTitle("Agenda telefonica");
system("color 4f");
printf("\n\n\n\n\n\n\n\n\n\n\n\n");
printf(" \xC9\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBB\n");
printf(" \xBA \xBA\n");
printf(" \xBA Ciencia da computacao! \xBA\n");
printf(" \xBA \xBA\n");
printf(" \xBA Treinamento de Programacao. \xBA\n");
printf(" \xBA \xBA\n");
printf(" \xBA \6 Agenda Telefonica \5 \xBA\n");
printf(" \xBA \xBA\n");
printf(" \xBA \xBA\n");
printf(" \xBA Criador: 41r0n E-mail: airon_rpg@hotmail.com \xBA\n");
printf(" \xBA Colaborador: Puts ninguem!!! \xBA\n");
printf(" \xC8\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xCD\xBC\n\n\n\n\n\n\n");
Sleep(3000);

system("cls");
system ("color 1f");
SetConsoleTitle("Agenda telefonica\\Cadastro");

char * nome = (char *) malloc(sizeof(char) * 100);
printf("\n Digite o seu nome: ");
fflush(stdin); gets(nome); fflush(stdin);
FILE * outFile = fopen("AgendaTel.txt", "a+");
fprintf(outFile, "\n\nNome: %s", nome);
fclose(outFile);
system("cls");

char * endereco = (char *) malloc(sizeof(char) * 100);
printf("\n Digite o endereco: ");
fflush(stdin); gets(endereco); fflush(stdin);
outFile = fopen("AgendaTel.txt", "a+");
fprintf(outFile, "\nEndereco: %s", endereco);
system("cls");

char * telefone = (char *) malloc(sizeof(char) * 100);
printf("\n Digite o telefone: ");
fflush(stdin); gets(telefone); fflush(stdin);
outFile = fopen("AgendaTel.txt", "a+");
fprintf(outFile, "\nTelefone: %s", telefone);
system("cls");

char * aniversario = (char *) malloc(sizeof(char) * 100);
printf("\n Digite a data do aniversario: ");
fflush(stdin); gets(aniversario); fflush(stdin);
outFile = fopen("AgendaTel.txt", "a+");
fprintf(outFile, "\nAniversario: %s", aniversario);
system("cls");

char * email = (char *) malloc(sizeof(char) * 100);
printf("\n Digite o e-mail: ");
fflush(stdin); gets(email); fflush(stdin);
outFile = fopen("AgendaTel.txt", "a+");
fprintf(outFile, "\nE-mail: %s", email);
fclose(outFile);
system("cls");

getch();}

agora só falta eu aprender a abrir o arquivo salvo!!! gostaria de uma nova forcinha aew!!!
OBS: procuro no google antes de encher o s... de alguem ^^!



10. Re: fopen e gerenciamento de arquivos binarios

Geraldo José Ferreira Chagas Júnior
gjr_rj

(usa Debian)

Enviado em 13/10/2008 - 13:55h

Cara, não está errado, mas não está bom.

Dessa forma você está gravando linhas txt. O que você quer fazer ? Criar um arquivo texto para ver comum editor qualquer ?

Se for para usar o arquivo como uma "base de dados" faz da forma que eu postei. Cria uma estrutura com os campos que você quer gravar e quando gravar, grava todos os dados de uma só vez.

O exemplo também mostra como ler os dados do arquivo.

Copia o código que eu postei, e compila que você vai ver o funcionamento. Ele grava dos dados no arquivo, depois lê do arquivo e mostra na tela. Eu coloquei os dados fixos, mas você vai fazer entrada via teclado. O bom também é não definir os campos strings como ponteiro e sim como array de char.

Mais uma coisa, é questão de gosto, mas não concordo com chamadas ao sistemas, usando o system, para fazer tarefas que deveriam ser feitas via código.


11. valeu galera

Thierry
thierryvdb

(usa Fedora)

Enviado em 13/10/2008 - 14:16h

valeu galera, mas consegui no dia mesmo. tava de prequiça por isso postei, risos. VOLROCKS


12. olha o q usei:

Airon Osorio
41r0n

(usa Conectiva)

Enviado em 27/10/2008 - 11:10h


SetConsoleTitle("Agenda telefonica\\Leitura de Cadastro");
system("cls");
FILE *fp;
fp = fopen("AgendaTel.txt", "r+");
if (fp == NULL)
{
printf("\aHouve um erro ao abrir o arquivo.\n");
return 1;
}
else
{
char linha[30];
while(fgets(linha, 30, fp)!=NULL)
{
printf("%s", linha);
}
}

de inicio deu certo...
mas agora ele le os dados muito bagunçados o meu professor disse q pode ser pq tem espaços em branco no armazenamento!







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts