Como salvar um array bidimensional em um arquivo em C?
-
21-12-2019 - |
Pergunta
Sou um programador C iniciante e atualmente estou trabalhando em um projeto para implementar o algoritmo de detecção de objetos Viola Jones usando C.Gostaria de saber como seria capaz de armazenar dados em uma matriz bidimensional em um arquivo que possa ser facilmente portado e acessado por diferentes arquivos de programa (por exemplo,main.c, header_file.h etc.)
Agradeço antecipadamente.
Solução
Não há detalhes suficientes para ter certeza do que você está procurando, mas a estrutura básica do que você deseja fazer será mais ou menos assim:
open file.csv for writing
for(iterate through one dimension of the array using i)
{
for(iterate through the other dimension of the array using j)
{
fprintf(yourfilehandle,"%d,",yourvalue[i][j]);
}
fprintf(yourfilehandle,"\n");
}
close your file
Como foi sugerido por outros, isso deixará você com uma .CSV
arquivo, que é uma escolha muito boa, pois é fácil de ler e analisar, e você pode abrir seu arquivo no Bloco de Notas ou Excel e visualizá-lo sem problemas.
Isso pressupõe que você realmente pretendia fazer isso com E/S de arquivo C, que é uma maneira perfeitamente válida de fazer as coisas, alguns acham que é um pouco desatualizado.
Observe que isso deixa uma vírgula estranha no final da linha.Se isso o incomoda, é fácil executar as condições pré e pós para obter apenas vírgulas onde desejar.Dica:envolve imprimir a vírgula antes da entrada dentro do segundo loop for, reduzir o número de entradas que você itera para o loop for interno e imprimir o primeiro e o último caso de cada linha especial, imediatamente antes e depois do loop for interno, respectivamente.Mais difícil de explicar isso, provavelmente.
Aqui está uma referência para E/S de arquivo estilo C e aqui está um tutorial.
Outras dicas
Sem saber nada sobre que tipo de dados você está armazenando, eu diria para armazená-los como uma matriz.Você precisará escolher um delimitador para separar seus elementos (tabulação ou espaço são escolhas comuns, também conhecidos como 'tsv' e 'csv', respectivamente) e então algo para marcar o final de uma linha (nova linha é uma boa escolha aqui) .
Portanto, seu arquivo salvo pode ser algo como:
10 162 1 5
7 1 4 12
9 2 2 0
Você também pode definir seu formato como tendo alguns metadados na primeira linha – o número de linhas e colunas pode ser útil se você quiser pré-alocar memória, junto com outras informações como codificação de caracteres.Comece simples e adicione conforme necessário!