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.

Foi útil?

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!

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top