31-05-2009, 12:37 AM
Alexandre, correndo o risco de estares a falar de alhos e eu a responder bogalhos
, aqui vai :
O conjunto
typedef struct {
int points; /* numero de pontos obtidos */
char player[8]; /* pacman, inky, blinky, pinky or clyde */
time_t sta_time; /* data/hora da entrada no jogo */
time_t end_time; /* data/hora da saida do jogo */
uid_t user; /* identificador do utilizador que jogou */
char logname[16]; /* nome do utilizador que jogou */
} pacman_record_t;
define um novo tipo que passa a poder ser utilizado como outro tipo "interno" ao C.
Isto é, da mesma forma que quando escreves :
int i_numero_inteiro;
Estás a declarar a variável i_numero_inteiro como sendo do tipo int, passas a poder declarar algo do género :
pacman_record_t v_registo_record;
Desta forma declaras a variável v_registo_record, como sendo do tipo pacman_record_t.
Depois de declarares essa variável, podes usá-la exactamente da mesma forma que qualquer outra, identificando o nome da variável seguido de "." (ou "->" no caso de ser um apontador) seguido do campo interno da estrutura, tipo :
v_registo_record.points=100;
ou
strcpy(v_registo_record.player, "blinky");
A escrita em ficheiro binário segue a forma :
fwrite(&v_registo_record,sizeof(v_registo_record),1, fp )
Parâmetros :
- Apontador para "o que" queres gravar
- Tamanho unitário do que queres gravar
- n vezes o tamanho do parâmetro anterior (Na práctica cada registo em ficheiro fica com o tamanho Parâmetro 2 * Parâmetro 3)
- Apontador para o ficheiro onde queres escrever
em que fp é um FILE *, previamente definido e que "sofreu" a atribuição dada por um fopen()
É claro que o exemplo está descrito para um único registo, mas o princípio é o mesmo para n registos.
A forma mais simples de usar a variável para n registos seria definir, por exemplo :
pacman_record_t v_registo_record[100];
Desta forma definirias um array com 100 registos, o inconveniente é que tens que saber o limite máximo que nem sempre é conhecido. Outra forma seria criar dinamicamente cada elemento do "array" com apontadores e respectiva alocação de memória, mas isso é outro filme
Se não era nada disto que querias saber, deculpa lá o tempo que te tomei
, aqui vai :O conjunto
typedef struct {
int points; /* numero de pontos obtidos */
char player[8]; /* pacman, inky, blinky, pinky or clyde */
time_t sta_time; /* data/hora da entrada no jogo */
time_t end_time; /* data/hora da saida do jogo */
uid_t user; /* identificador do utilizador que jogou */
char logname[16]; /* nome do utilizador que jogou */
} pacman_record_t;
define um novo tipo que passa a poder ser utilizado como outro tipo "interno" ao C.
Isto é, da mesma forma que quando escreves :
int i_numero_inteiro;
Estás a declarar a variável i_numero_inteiro como sendo do tipo int, passas a poder declarar algo do género :
pacman_record_t v_registo_record;
Desta forma declaras a variável v_registo_record, como sendo do tipo pacman_record_t.
Depois de declarares essa variável, podes usá-la exactamente da mesma forma que qualquer outra, identificando o nome da variável seguido de "." (ou "->" no caso de ser um apontador) seguido do campo interno da estrutura, tipo :
v_registo_record.points=100;
ou
strcpy(v_registo_record.player, "blinky");
A escrita em ficheiro binário segue a forma :
fwrite(&v_registo_record,sizeof(v_registo_record),1, fp )
Parâmetros :
- Apontador para "o que" queres gravar
- Tamanho unitário do que queres gravar
- n vezes o tamanho do parâmetro anterior (Na práctica cada registo em ficheiro fica com o tamanho Parâmetro 2 * Parâmetro 3)
- Apontador para o ficheiro onde queres escrever
em que fp é um FILE *, previamente definido e que "sofreu" a atribuição dada por um fopen()
É claro que o exemplo está descrito para um único registo, mas o princípio é o mesmo para n registos.
A forma mais simples de usar a variável para n registos seria definir, por exemplo :
pacman_record_t v_registo_record[100];
Desta forma definirias um array com 100 registos, o inconveniente é que tens que saber o limite máximo que nem sempre é conhecido. Outra forma seria criar dinamicamente cada elemento do "array" com apontadores e respectiva alocação de memória, mas isso é outro filme

Se não era nada disto que querias saber, deculpa lá o tempo que te tomei

