Nevis 0 Denunciar post Postado Novembro 18, 2006 dae Galera beleza...é o seguinte..estou fazendo um trab p facul baseado num estacionamento de carros. Ainda está no começo, mas quero colocar mais coisas pra frente...Vai ficar gravado a hora, data, placa e o preço total do serviço. Só fiz o struct da hora ainda, mas parece que algo esta errado. O numero que eu digitar era pra ele gravar no arquivo, mas aparece uns símbolos muito estranhos!! sera que alguem pode me ajudar?? valeu o código é o seguinte: #include <stdio.h>#include <conio.h>#include <string.h>void main(){ struct { char desc[4]; int ind; } tipo_hora; int hora; FILE *fptr; fptr = fopen("teste.txt","w"); printf(" BEM-VINDO AO PROGRAMA DE ESTACIONAMENTO\n\n"); printf("Digite a hora: "); scanf("%d", &hora); //gets(tipo_hora.desc); int i; for(i=0;i<24;i++) { if ((hora>24) || (hora<=0)) { printf("\nHora invalida"); printf("\n\nDigite uma hora valida: "); scanf("%d",&hora);} //fwrite(&tipo_hora,sizeof(tipo_hora),1,fptr); } fwrite(&tipo_hora,sizeof(tipo_hora),1,fptr); fclose(fptr); getch();} Compartilhar este post Link para o post Compartilhar em outros sites
NorTheR 0 Denunciar post Postado Novembro 19, 2006 Vamos lá, tbm estou aprendendo a mecher com arquivos, mas vou tentar te ajudar :) você colocou o modo "w" para iniciar o arquivo, olhe o que o modo w faz: cria e abre novo arquivo texto onde podem ser realizadas apenas operações de gravação o ideal seria usar o "r+": abre arquivo texto existente posicionando a cabeça de leitura e gravação no início do arquivo, permitindo ler e gravar dados; o w'+' é bom usar na condição de não existir ainda o arquivo.. aí ele cria e tudo bem, mas aí, o que esta acontecendo, ele sempre cria um arquivo novo ao você compilar, e tudo que você salvou antes foi deletado.. Utilize o modo "r+" para ler e gravar, mas antes não se esqueça de fazer o teste [ if (ftpr == NULL) ... fopen (w+) e depois coloque outro fopen com o modo "r+" ] Teste tbm utilizando o ferror logo após cada fwrite: if (ferror (fptr)) printf ("Erro ao salvar!!\n"); aí você sabera se esta salvando ou não.. caso não está salvando... de um fclose(fptr), e abra novamente o arquivo usando [ fptr = fopen("teste.txt","r+") ], mas como aí esta tudo em uma função só, provavelmente não vai ter problemas. e bote um fread ae ;) Compartilhar este post Link para o post Compartilhar em outros sites
The Jack 0 Denunciar post Postado Novembro 21, 2006 E é bom utilizar o A+ para ler criar e depois continuar gravando no arquivo. Compartilhar este post Link para o post Compartilhar em outros sites
Filipe_Ctba 0 Denunciar post Postado Novembro 23, 2006 você ta gravando o endereço da struct tipo_hora no arquivo, por isso aparecem arquivos estranhos.o Certo é você usar:fwrite(tipo_hora.desc,sizeof(4),1,fptr);fwrite(tipo_hora.ind,sizeof(int),1,fptr); Compartilhar este post Link para o post Compartilhar em outros sites
NorTheR 0 Denunciar post Postado Novembro 23, 2006 você ta gravando o endereço da struct tipo_hora no arquivo, por isso aparecem arquivos estranhos. o Certo é você usar: fwrite(tipo_hora.desc,sizeof(4),1,fptr); fwrite(tipo_hora.ind,sizeof(int),1,fptr); Eu já testei e ele salva tudo se coloca só a variavel da struct, não precisa fazer esse trabalhão todo..Mesmo acontece com vetores, se tem o vetor x[20], para salvar é: fwrite(&x,sizeof(x),1,fptr); Compartilhar este post Link para o post Compartilhar em outros sites
Filipe_Ctba 0 Denunciar post Postado Novembro 23, 2006 Intao funciona... O codigo dele ta errado pq ele ta guardando a informacao em hora do tipo int, e armazena uma struct vazia no arquivo.O programa coloca um monte de lixo no arquivo.Tem que declarar hora como tipo_hora e armazenar os dados ali, e ai sim guardar no arquivo. Compartilhar este post Link para o post Compartilhar em outros sites