• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

nando_ice

[Resolvido] ajuda ficheiros

7 mensagens neste tópico

boas

gostava de saber como se faz comparacao entre fixeiros, em k o campo é do tipo inteiro?

sei k do tipo char a comparacao é feita do seguite modo

strcpy(reg.nome,nome);

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Parece-me que há uma grande confusão neste tópico. Falas em comparação entre ficheiros, depois de um campo int, e por fim entre strings com uma função de cópia. Por um lado parece que estás a falar de Pascal, quando associas ficheiros e campos. Mas não percebi bem o que queres. Podes dar uma explicação mais clara?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu estou a fazer um trabalho em k estou a utilzar estruturas... e gravao o sei fixeiro em .dat!

agora a kestao é a seguito como se faz comparacoes entre numeros inteiros? eu tenho o campo codigo e keria comparar com outro campo, kando o campo é tipo char faz-se da maneira como indiquei na kestao anterior? [strcpy(reg.nome,nome);]

espero me ter esclarecido  :(

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

  • Já leste a estrutura do ficheiro?
  • reg é a estrutura?
  • o campo codigo é um inteiro?
  • reg.nome e nome sao do tipo char*?

Era mais fácil se mostrasses a parte do código na qual estás com dúvidas...

strcpy(reg.nome, nome); copia o conteúdo de um array de char chamado nome para outro array de char chamado nome que está dentro da struct reg. Acho que a função que pretendes utilizar é a strcmp(char.nome, nome); que retorna o valor 0 se o conteúdo dos dois arrays for igual.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja nao necessito de ajuda ja resolvi o meu problema!!! obrigado na mesma

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja nao necessito de ajuda ja resolvi o meu problema!!! obrigado na mesma

Podias explicar melhor o problema e como resolveste, para que os outros leitores que venham a ter a mesma dúvida ficarem esclarecidos  :ipool:

Cumpr. bk@ero

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o caso era o seguinte eu tinha um funcao editar assim:

void editar()
{
FILE *f;

int Codigo;

char nome[20],s[255];
char rua[50];
int numporta;
char andar[20];
char localidade[20];
int numgarrafas;

	printf("Caso deseje manter o campo prima ENTER para passar ao seguinte!\n");
	printf("Qual o codigo que deseja alterar: "); scanf("%d",&Codigo);
if ((f=fopen("dadoscliente.dat","r+"))!=NULL)
{
	fread(&reg,sizeof(reg),1,f);

	while (!(feof(f)))
	{		
		if (Codigo==reg.codigo){
			printf("\n\nCodigo\tNome\tRua\tNumero_Porta\tAndar\tLocalidade\n");
			printf("\n%d\t%s\t%s\t%d\t\t%s\t%s\n",reg.codigo ,reg.nome ,reg.rua, reg.numporta, reg.andar, reg.localidade);

			printf("Codigo Cliente: %d\n",reg.codigo);

			printf("Nome: ");
			fflush(stdin);
			gets(nome);
			if (strcmp(nome,""))
				strcpy(reg.nome,nome);

			printf("Rua: ");
			fflush(stdin);
			gets(rua);
			if (strcmp(rua,""))
				strcpy(reg.rua,rua);

			printf("Numero porta: ");
			fflush(stdin);
			numporta=atoi(gets(s));
			if (numporta!=0)
				reg.numporta=numporta;

			printf("Andar: ");
			fflush(stdin);
			gets(andar);
			if (strcmp(andar,""))
				strcpy(reg.andar,andar);

			printf("Localidade: ");
			fflush(stdin);
			gets(localidade);
			if (strcmp(localidade,""))
				strcpy(reg.localidade,localidade);

			fseek(f,ftell(f)-sizeof(reg),SEEK_SET);
			fwrite(&reg,sizeof(reg),1,f);

			break;
		}
		fread(&reg,sizeof(reg),1,f);
	}
	fclose(f);

}
}
 

e eu keria k ao clicar no entar ele paxexe ao outro campo sem alterar o mesmo, com campos do tipo char era facil, a minha duvida era com campos do tipo inteiro... mas como veem no programa consegui resolver o caso!!!  ;)

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora