É possível eu conseguir gravar as 3 Structs ao mesmo tempo no mesmo arquivo com o fwrite?
E se possível neste caso, eu poderia ler apenas 1 das Structs para modificá-la? Usaria o fseek neste caso? (OBS Modificar 1 sem estragar as outras claro)
Cada struct deve ser manipulada individualmente, pelo que eu aprendi. Gravar as três simultaneamente com o mesmo comando, creio que não tem como, eu não conheço um método a não ser gravar as informações nas structs sequencialmente e não simultaneamente. você pode usar o fwrite para gravar uma por uma de forma sequencial.
Não importa o método de gravação ou manipulação, cada struct pode ser alterada individualmente.
___________________________________
Conhecimento não se Leva para o Túmulo.
paulo1205 escreveu:As estruturas são do mesmo tipo, ou são de tipos distintos?
Boa Pergunta, esqueçi de informar. As Structs são diferentes, Umas terão mais variáveis outras não, inclusive são usadas para propósitos totalmente diferentes, elas nada tem a ver uma com as outras nem em tamanho e nem em nada a não ser por coincidência. Tipo um exemplo abaixo.
A pergunta que fiz é baseada na seguinte idéia que pensei! Inicialmente eu fiz um programa com apenas 1 Struct que eu salvo no arquivo! Porém agora eu quero colocar outras 2 Structs no programa. Que são usadas para coisas diferentes. Mas seria interessante eu salvá-las no mesmo arquivo, assim apenas 1 comando Save salvaria tudo para acessar depois.
No Momento atual esse programinha que fiz não salva em binário, optei por salvar os dados como texto, criei um sistema para separar configurações através de linhas específicas, e Salvo 1 Struct a partir da Linha 5. Uso Caracteres especiais da Tecla ASCII como SOH, STX, ETX, GS, RS, US para separar Registros, Configurações, Campos e etc... E o que faço é varrer o arquivo para obter os dados.
Salvo como texto para analisar visualmente o arquivo enquanto desenvolvo o programa, até porque mais na frente, antes de salvar eu criptografarei os dados.
Porém, Embora eu goste da forma como inventei, me sinto seguro vendo e tendo 100% de certeza que está tudo lá, quero também ter capacidade para confiar em gravação binária, o que ainda estou estudando o fwrite de minha última pergunta. E me deparei com o problema do fwrite gravar apenas 1 Struct, o que com certeza não me serviria em nada, visto que como disse, eu salvo tanto a Struct como outras coisas e configurações, logo se eu fosse usar o fwrite neste caso, eu teria que criar 1 Struct para configurações, outra Struct para os Dados, Outra para dados secundários... E é aqui que fiquei perdido em como salvar tantas structs e 1 arquivo de uma só vez, e poder ler tudo novamente certinho do arquivo para o programa!
Uma idéia do meu arquivo atual usando um sistema de texto:
Nesse arquivo se lê:
STX = Inicio de um Registro Especial que nada tem a ver com a Struct | Caracter 2 da tabela ASCII
ETX = Fim de um Registro Especial que nada tem a ver com a Struct | Caracter 3 da tabela ASCII
US = Separador de Campos | Caracter 31 da tabela ASCII
RS = Inicio de Registros da Struct | Caracter 30 da tabela ASCII
1ª Linha = Informações da Struct atual usada para salvar o arquivo naquele momento.
3ª Linha = Tabela de Grupos
5ª Linha para frente os dados da Struct
SEMPRE seguindo as regras acima
Então no Caso desse arquivo se eu fosse salvar usando o fwrite por exemplo, eu teria que usar 2 Structs. Uma para a Struct normal e outra para salvar a Linha 1 e a Linha 3. Por isso a pergunta se consigo salvar mais de uma Struct em 1 arquivo e poder ler elas separadamente.
Cada struct deve ser manipulada individualmente, pelo que eu aprendi. Gravar as três simultaneamente com o mesmo comando, creio que não tem como, eu não conheço um método a não ser gravar as informações nas structs sequencialmente e não simultaneamente. você pode usar o fwrite para gravar uma por uma de forma sequencial.
Não importa o método de gravação ou manipulação, cada struct pode ser alterada individualmente.
___________________________________
Conhecimento não se Leva para o Túmulo.
Talvez eu tenha dito de forma errada! Mas baseado no que vc sabe, Mesmo que eu usa-se 3 comandos para gravar cada Struct, minha dúvida é: Posso salvar as 3 no mesmo arquivo? Meu objetivo é ter 1 Arquivo para ser usado para minhas 3 Structs. Não seria um problema ao Salvar re-construir o arquivo. Pois quando o programa carrega é quando ele lê o arquivo e coloca os dados nas Structs. Então qdo eu for salvar no arquivo, todos os dados estão na memória, logo posso salvar eles no arquivo substituindo o existente!
O Problema é que o fwrite separa seu espaço pra usar, e não sei ainda bem como isso funciona, se tipo abro o arquivo em Modo Append, e vou gravando uma Struct de cada vez, e então eu teria 3 gravadas no arquivo, e nem faço idéia de como ler cada Struct desse arquivo que possue 3, até porque ele grava em Modo binário, e não consigo ver nada para estudar a forma como ele grava no arquivo!