Jump to content

[Resolvido] ajuda ficheiros


nando_ice

Recommended Posts

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?

Desaparecido.

Link to comment
Share on other 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  😞

Link to comment
Share on other 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.

Desaparecido.

Link to comment
Share on other 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

Link to comment
Share on other sites

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.