gunky Posted April 9, 2009 at 02:07 PM Report #256083 Posted April 9, 2009 at 02:07 PM Boas tenho um programa representado com o seguinte codigo //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! getch da warning em vs 2005 _getch->OK #define _CRT_SECURE_NO_DEPRECATE 1 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <conio.h> #include <ctype.h> #include <time.h> typedef struct aluno{ char nome[150]; char cod[10]; //codigo do aluno e unico int idade; //Disciplina inscricao; // campo que guarda as disciplinas o nivel e as notas do aluno }ALUNO; ALUNO array_a[200]; void escreve(ALUNO *al) { FILE *fp; int i=0; fp=fopen("Alunos.dat","wb"); if(fp==NULL) printf("Erro abrir ficheiro"); for(i=0;i<=1;i++) { printf("nome:\n"); fflush(stdin); scanf(" %s",&(array_a[i].nome)); printf("codigo:\n"); fflush(stdin); gets(array_a[i].cod); printf("idade:\n"); fflush(stdin); scanf(" %d", &(array_a[i].idade)); printf("\n\n"); fwrite(&al,sizeof(ALUNO),1,fp); } fclose(fp); fp=fopen("Alunos.dat","rb"); if(fp==NULL) printf("Erro abrir ficheiro"); for(i=0;i<=1;i++) { while ( fread(&al, sizeof(ALUNO), 1, fp) == 1 ) puts(array_a[i].nome);// probs aqui printf("codigo ------ %s\n", array_a[i].cod); printf("idade ------ %d\n", array_a[i].idade); system("pause"); } fclose(fp); } int main() { ALUNO n; escreve(&n); return 0; } acontece q ele guarda bem os dados no ficheiro mas quando ponho-me a ler os valor imprime-me 2 vezes o nome do 1 utilizador que introduzi.... onde e que esta o erro?!?!' tks in advance
_deXter Posted April 9, 2009 at 04:30 PM Report #256119 Posted April 9, 2009 at 04:30 PM Assim muito de repente... É mesmo suposto o "puts(array_a.nome);" estar dentro do ciclo "while ( fread(&al, sizeof(ALUNO), 1, fp) == 1 )" ? Nota que ao não colcar chavetas nem ; a primeira operação seguinte é considerada dentro do while. É mesmo isso que queres? Ou seja o teu código está equivalente a ter: while ( fread(&al, sizeof(ALUNO), 1, fp) == 1 ) { puts(array_a[i].nome);// probs aqui } É mesmo isto que pretendes?
gunky Posted April 9, 2009 at 04:35 PM Author Report #256120 Posted April 9, 2009 at 04:35 PM Assim muito de repente... É mesmo suposto o "puts(array_a.nome);" estar dentro do ciclo "while ( fread(&al, sizeof(ALUNO), 1, fp) == 1 )" ? Nota que ao não colcar chavetas nem ; a primeira operação seguinte é considerada dentro do while. É mesmo isso que queres? Ou seja o teu código está equivalente a ter: while ( fread(&al, sizeof(ALUNO), 1, fp) == 1 ) { puts(array_a[i].nome);// probs aqui } É mesmo isto que pretendes? Amen ao dexter.... o erro esta ai...danke
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now