Ficheiro em C

skirk

Power Member
Boas tenho uma duvida no seguinte, eu to a fazer um projecto de manipulacao de um sistema de cartao magnetico intra-escolar que permita carrega-lo, fazer debitos nos diferentes stios(bar,livraria,...) e num das opçoes precis guardar em ficheiros os dados de um determinado cartao bem como os seus ultimos movimentos. Esse sub-programa deve começar por pedir o numero ao utilizador e deopis cria um ficheiro de txt com o seguinte nome: (cartao_nºdo cartao), a mha duvida e como ek faco para cada numero de cartao criar um ficheiro diferente, o problema esta no nome com k vamos fazer o fopen...normalmente usa-se assim

FILE *fich;
fich=fopen("cartao_numero","w");

mas eu kero k onde esta numero apareça o numero do cartao, conforme o numero k o utilizador introduza. ;)
 
Eu tb estou a dsevenvolver uma aplicação destas, mas estou com duvidas na parte de alterar um cartão, tenho um cartão criado e quero alterar os dados do mesmo, alg pode dár umas dicas?

Obg
 
Eu tb estou a dsevenvolver uma aplicação destas, mas estou com duvidas na parte de alterar um cartão, tenho um cartão criado e quero alterar os dados do mesmo, alg pode dár umas dicas?

Obg

Abres o ficheiro em modo de leitura e les todo o ficheiro... depois alteras o q tiveres de alterar nos dados lidos...
Finalmente voltas a abrir o ficheiro em modo de escrita (que vai substituir por completo o ficheiro) e voltas a escrever tudo...

[]
 
Boas tenho uma duvida no seguinte, eu to a fazer um projecto de manipulacao de um sistema de cartao magnetico intra-escolar que permita carrega-lo, fazer debitos nos diferentes stios(bar,livraria,...) e num das opçoes precis guardar em ficheiros os dados de um determinado cartao bem como os seus ultimos movimentos. Esse sub-programa deve começar por pedir o numero ao utilizador e deopis cria um ficheiro de txt com o seguinte nome: (cartao_nºdo cartao), a mha duvida e como ek faco para cada numero de cartao criar um ficheiro diferente, o problema esta no nome com k vamos fazer o fopen...normalmente usa-se assim

FILE *fich;
fich=fopen("cartao_numero","w");

mas eu kero k onde esta numero apareça o numero do cartao, conforme o numero k o utilizador introduza. ;)

skirk por acaso isso não é o projecto de IP 2006/2007 da EST Setubal? :-D
 
Abres o ficheiro em modo de leitura e les todo o ficheiro... depois alteras o q tiveres de alterar nos dados lidos...
Finalmente voltas a abrir o ficheiro em modo de escrita (que vai substituir por completo o ficheiro) e voltas a escrever tudo...

[]

entao e se por exemplo tenho varias linhas cada uma com nome, password e data de login
se quiser so mudar a data de login de um deles posso na leitura atribuir por exemplo a string Nome a todos os nomes ou tenho que ter uma por nome?!
 
Última edição:
ok desculpem,

é assim eu tenho um ficheiro que em cada linha guarda os seguintes dados:
Nome, Passord para o login, data de registo e pontuaçoes mais altas de jogos.

o problema é que nao estou a conseguir por as pontuaçoes mais altas a escreverem no ficheiro, porque so quero mudar para o jogador em questao eu tentei isto, mas so da se so tiver 1 jogador no ficheiro...

fp= fopen("Regis.txt", "r+");
while(fscanf(fp, "%s %s %s %d %d %d", Nome2, Password, mes, &dia, &ano, &pont2) !=EOF)
{
if (strcmp(Nome2, Nome)==0 && pont2<=pont);
fprintf(fp, "%s %s %s %d %d %d \n", Nome2, Password, mes, dia, ano, pont);
fclose(fp);
}


o problema é que as strings so guardam os 1º dados, ou seja o 1º nome, a 1º password e a 1º data =S
 
Num caso destes, acho que o comportamento ideal seria teres os dados em memória e escrever apenas para ficheiro no final do programa.
Ou seja, a menos que seja especificamente pedido para o programa trabalhar on-the-fly, as alterações seriam todas feitas na memória.
Por exemplo se tiverem
Código:
nome=alberto
pass=blabla
idade=34
alterar a pass on-the-fly para uma de tamanho diferente é uma enorme dor de cabeça! Se a pass tiver o mesmo tamanho, é "naquela"...

No vosso caso, devem de estar a trabalhar com listas ligadas, e cada struct deve de ter o nome, pass, etc... Ou seja, ao arrancar o programa terão de ler todos os ficheiros, criar a vossa estrutura em memoria com os conteúdos dos ficheiros e no final do programa (antes do return 0) escrever tudo para os ficheiros. ;)
Assim, fazer alterações, consultas e escritas será banal, uma vez que está tudo em memoria.
Isto tudo, porque os ficheiros não deixam de ser sequências lineares de bytes, e é uma dor de cabeça andar a ler linha-a-linha a tentar processar certas sequências de números e letras, assumindo que elas existem e estão correctas nos ficheiros, senão é outra dor de cabeça evitar que o programa rebente se o ficheiro não tiver os caracteres como o programa está à espera.

Como alguém disse noutro tópico, bater código qualquer um sabe, agora programar, implementar estruturas de dados, etc... é outra conversa.
 
Última edição:
Back
Topo