Jump to content

Imprime-me 2 vezes 1 campo da estrutura...PQ??!


Recommended Posts

Posted

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

Posted

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?

Posted

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.