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

AliG

Memoria dinamica + estruturas + ficheiros

9 mensagens neste tópico

Boas pessoal...

tenho um problema e gostava q m ajudassem se pudesse ser  :D

Para um agenda electronica peço ao utilizador (atraves das estruturas) todas as informaçoes referentes ao contacto q quer criar e dps tenho quero guardar tudo isso num ficheiro... como posso fazer esta parte final ?!  :confused:

No fim d ter as informaçoes do contacto q vou criar como guardo isso num vector?

Agradecia td o tempo disponibilizado

Abraço  :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Provavelmente podes escrever os dados directamente das estruturas para um ficheiro usando a função fwrite. A menos que alguns dos campos sejam apontadores.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes criar um array de estruturas ou tens mesmo que usar memória dinâmica?

Dá mais detalhes sff.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim posso criar o vector de estruturas mas no fim terei que mandar a informação referente ao contacto q pedi para um ficheiro...

Inserir um novo registo -> Ler toda a informaçao -> gravala num ficheiro

e isto k keria fazer...

Escrever lg directamente no ficheiro sem ir plo caminho do vector d estruturas seria abrir o ficheiro em modo de escrita a cauda certo ?  :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se o que queres é escrever só a estrutura da qual acabaste de receber a informação, acrescentando-a a um ficheiro que já poderá conter outros dados escritos anteriormente, sim.

Abres o ficheiro em modo append ('a+') e fazes fwrite da estrutura.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas estou aqui com um problema identico :wallbash:

o funcionamento do programa é basicamente o mesmo que o descrito em cima...

Introduzir os dados->grava na estrutura->grava no ficheiro...

a minha estutura é esta

struct tipo_de_desastre_comum
{

char denimonacao[20];
float latitude,longitude,danos_materiais;
int mes,dia,ano,hora,minuto,danos_humanos_mortes,danos_humanos_feridos,tipo,sub_tipo;

};

struct tipo_de_desastre_comum registo[2];

como é que faço o fwrite desta estrutura???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

[...]

struct tipo_de_desastre_comum
{
[...]
};

struct tipo_de_desastre_comum registo[2];

como é que faço o fwrite desta estrutura???

fprintf dentro de um ciclo for?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado já esta resolvido...

queria usar o fwrite() por poupar codigo mas infelizmente não foi possivel tive de fazer com fprintf.

Já agora tenho uma questão que me está a dar em doido :wallbash:

Um dos pontos que tenho no protocolo é o seguinte.

Crie uma função que permita ler informação sobre desastres naturais separada por tab e guardada em um de nome desastres.txt

até aqui tudo bem o problema foi quando vi o ficheiro .txt para ler  :eek:

que é deste tipo:

Tipo Subtipo Tipo Subtipo Ano Mês Dia Hora Minuto Pais Estado/provincia/cidade Nome Latitude Longitude Mortos Feridos Danos Materiais Distancia á fonte HH_Propagação MM_Propagação Altura máxima

Outros Tsunamis 4 2 1900 8 11 4 40 USA AK "LITUYA BAY, AK " 58.6 -137.1 5 -999 -999 23 -999 -999 -999

Outros Tsunamis 4 2 1900 9 17 21 45 PAPUA NEW GUINEA -999 "RABAUL (BLANCHE BAY), NEW BRITAIN " -4.22 152.18 -999 -999 -999 471 -999 -999 3

Outros Tsunamis 4 2 1900 10 7 21 4 INDONESIA -999 NAPAN -2.55 134.5 5 -999 -999 632 -999 -999 -999

Outros Tsunamis 4 2 1900 10 29 -999 -999 VENEZUELA -999 MACUTO 10.617 -66.883 -999 -999 -999 77 -999 -999 -999

Outros Tsunamis 4 2 1900 10 29 -999 -999 VENEZUELA -999 PAPARO 10.383 -65.983 -999 -999 -999 107 -999 -999 -999

Outros Tsunamis 4 2 1900 10 29 -999 -999 VENEZUELA -999 PUERTO TUY 10.333 -65.917 -999 -999 -999 116 -999 -999 10

Outros Tsunamis 4 2 1900 10 29 -999 -999 VENEZUELA -999 SAN JOSE DE RIO CHICO 10.3 -65.983 -999 -999 -999 115 -999 -999 -999

Outros Tsunamis 4 2 1901 3 3 7 45 USA CA "MONTEREY, CA " 36.605 -121.888 -999 -999 -999 141 -999 -999 -999

Outros Tsunamis 4 2 1901 6 24 -999 -999 JAPAN KAGOSHIMA AMAMI OSHIMA RYUKY 29.25 129.45 -999 -999 -999 162 -999 -999 -999

Outros Tsunamis 4 2 1901 6 24 -999 -999 JAPAN MIYAZAKI HOSOJIMA 32.433 131.667 -999 -999 -999 510 -999 -999 0.2

Outros Tsunamis 4 2 1901 6 24 -999 -999 JAPAN OKINAWA "NAZE, OKINAWA PREFECTURE " 26 126 -999 -999 -999 481 -999 -999 -999

Outros Tsunamis 4 2 1901 8 9 9 23 JAPAN HOKKAIDO NEMUROKO 43.35 145.583 -999 -999 -999 407 -999 -999 0.04

Outros Tsunamis 4 2 1901 8 9 9 23 JAPAN IWATE MIYAKO 39.65 141.983 -999 -999 -999 104 -999 -999 0.6

Outros Tsunamis 4 2 1901 8 9 9 23 JAPAN MIYAGI AYUKAWA 38.3 141.5 -999 -999 -999 259 0 27 0.23

Outros Tsunamis 4 2 1901 8 9 13 1 USA HI "HONOLULU, OAHU, HI " 21.3 -157.867 -999 -999 -999 5946 9 -999 0.12

Outros Tsunamis 4 2 1901 8 9 13 1 USA HI "HONUAPO, HAWAII, HI " 19.087 -155.553 -999 -999 -999 5909 -999 -999 -999

Outros Tsunamis 4 2 1901 8 9 13 1 USA HI "HOOKENA, HAWAII, HI " 19.38 -155.9 -999 -999 -999 5910 -999 -999 -999

Outros Tsunamis 4 2 1901 8 9 13 1 USA HI "HOOPULOA, HAWAII, HI " 19.2 -155.9 -999 -999 -999 5895 -999 -999 1.2

Outros Tsunamis 4 2 1901 8 9 13 1 USA HI "KAILUA-KONA, HAWAII, HI " 19.63 -155.99 -999 -999 -999 5925 8 30 1.2

Outros Tsunamis 4 2 1901 8 9 13 1 USA HI "KEAUHOU, HAWAII, HI " 19.57 -155.95 -999 -999 -999 5922 -999 -999 -999

Outros Tsunamis 4 2 1901 8 9 13 1 USA HI "MAHUKONA, HAWAII, HI " 20.186 -155.906 -999 -999 -999 5978 -999 -999 -999

Outros Tsunamis 4 2 1901 8 9 13 1 USA HI "NAPOOPOO, HAWAII, HI " 19.477 -155.922 -999 -999 -999 5917 -999 -999 -999

Outros Tsunamis 4 2 1901 8 9 18 33 JAPAN HOKKAIDO NEMUROKO 43.35 145.583 -999 -999 -999 409 -999 -999 0.02

Outros Tsunamis 4 2 1901 8 9 18 33 JAPAN MIYAGI AYUKAWA 38.3 141.5 -999 -999 -999 265 0 25 0.25

Outros Tsunamis 4 2 1901 8 9 20 0 JAPAN HOKKAIDO NEMUROKO 43.35 145.583 -999 -999 -999 407 -999 -999 0.02

Outros Tsunamis 4 2 1901 12 31 9 2 USA AK "KENAI, AK " 60.55 -151.25 -999 -999 -999 1582 -999 -999 -999

Outros Tsunamis 4 2 1902 2 26 -999 -999 EL SALVADOR -999 ACAJUTLA 13.567 -89.833 -999 -999 -999 37 -999 -999 -999

Outros Tsunamis 4 2 1902 2 26 -999 -999 EL SALVADOR -999 BARRA DE SANTIAGO 13.691 -89.999 100 -999 -999 58 -999 -999 -999

Outros Tsunamis 4 2 1902 2 26 -999 -999 EL SALVADOR -999 BARRA DEL PAS -999 -999 85 -999 -999 -999 -999 -999 -999

Outros Tsunamis 4 2 1902 2 26 -999 -999 USA CA "SAN DIEGO, CA " 32.715 -117.174 -999 -999 -999 3527 -999 -999 -999

Outros Tsunamis 4 2 1902 5 5 -999 -999 MARTINIQUE -999 "ST. PIERRE, MARTINIQUE " 14.73 -61.18 -999 -999 -999 10 -999 -999 5

Outros Tsunamis 4 2 1902 5 7 -999 -999 BARBADOS -999 BARBADOS 13.166 -59.533 -999 -999 -999 179 -999 -999 1

Outros Tsunamis 4 2 1902 5 7 -999 -999 GRENADA -999 GRENADA 12.117 -61.667 -999 -999 -999 145 -999 -999 1

O grande problema é que tenho 5 mil linhas para ler :mad:

para isso criei duas estruturas para o qual queria usar uma alocação dinamica de memoria.

struct tipo_de_desastre_comum_lido
{

char denimonacao[20];
float latitude,longitude,danos_materiais;
int mes,dia,ano,hora,minuto,danos_humanos_mortes,danos_humanos_feridos,tipo,sub_tipo;

};

struct tipo_de_desastre_comum_lido *y;

y=(struct tipo_de_desastre_comum_lido*)malloc(5000*sizeof(tipo_de_desastre_comum_lido));

o problema é que isto dá 3 erros.

C:\Users\Vitor\Desktop\lab1inf\lab1inf\lab1inf.c(49) : error C2040: 'y' : 'int ' differs in levels of indirection from 'struct tipo_de_desastre_comum_lido *'

C:\Users\Vitor\Desktop\lab1inf\lab1inf\lab1inf.c(49) : error C2065: 'tipo_de_desastre_comum_lido' : undeclared identifier

C:\Users\Vitor\Desktop\lab1inf\lab1inf\lab1inf.c(49) : error C2099: initializer is not a constant

Alguem sabe uma forma melhor de o fazer ou o porque destes erros?:down:

Obrigado a todos :D

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