Muitos produtos de software que lidam com números e cálculos têm a capacidade de dados de saída em um Comma Separated Value (CSV) . Este formato pode ser uma maneira eficaz de transporte de dados entre programas diferentes , pois é de fácil leitura e bastante fácil de manipular. Muitos programas em C que lidam com dados provavelmente vai ter que ler um arquivo CSV em algum ponto. Coisas que você precisa
editor de texto
Compiler
CSV entrada
Mostrar Mais instruções
1
Consulte a documentação do programa que está fornecendo o CSV arquivo . Determinar o número de campos , em cada linha , assim como o formato de cada campo . Por exemplo , se um programa fornece um arquivo CSV com os seguintes dados :
1 , "teste" , 34,5
Você poderia anotar três campos: um inteiro, uma corda e um número de ponto flutuante .
2
Criar uma estrutura que contém um membro de dados para cada campo identificado no CSV. Usando a linha de exemplo , desde de 1 , "teste" , 34,5 seria necessário a seguinte estrutura:
struct dados
{
int col1 ;
char * col2 ;
flutuar col3 ;
};
3
Crie um método em seu programa que vai lidar com a leitura do arquivo CSV. Isto terá de ser acessível para o resto do seu programa, e provavelmente terá de trabalhar em estruturas de dados comuns para que outros métodos podem acessar os dados que foi lido dentro Passe o parâmetro por referência para eliminar a necessidade de um valor de retorno . Um protótipo de função exemplo seria:
vazio ParseCSV (char * filename , dados e entrada) ;
4
Inclua o padrão de IO usando o seguinte código :
# include
Adicione este código ao topo do arquivo de origem que será ler o CSV.
5
incluir a biblioteca string para permitir a manipulação do dados CSV usando o seguinte código :
# include
Adicione este código ao topo do arquivo de origem que será ler o CSV
. 6
Criar um objeto de arquivo , que irá ler os dados , usando o seguinte código :
fILE * pInput ;
7
Criar um buffer de caracteres suficientemente grande para conter um linha do arquivo de cada vez. Devido a limitações da linguagem , a maneira mais simples de fazer isso é declarar uma matriz de caracteres de um tamanho suficientemente grande , como acontece com :
# define BUFFER_SIZE 1024
de char buf [ BUFFER_SIZE ] ;
8
Abra o arquivo com o seguinte código , e atribuí-lo ao seu objeto de arquivo criado anteriormente :
pInput = fopen ( "nome do arquivo ", "r" )
9
lido em uma linha do arquivo usando o seguinte código :
fgets ( buf , sizeof ( buf ) , pInput )
10
Analise o CSV usando a função " strtok " . Crie uma nova seqüência de caracteres para apontar para as fichas, e inicialize-o com os dados da linha lida em acima :
char * tok = strtok ( buf , ",")
11 < p > Converter as símbolo recebidos em os dados apropriados. Usando a linha de exemplo :
1 , "teste" , 3,45
converter os dados contidos no " tok " para um inteiro usando o seguinte código :
row.col1 = atoi ( tok );
12
Para leituras subsequentes da mesma linha , passar " strtok " um parâmetro NULL em vez da string buffer que você leia antes :
tok = strtok ( NULL, ",")
Em seguida, converta o token para o tipo de dados apropriado . Usando a linha de exemplo
1 , "teste" , 3,45
O código de análise para uma única linha seria :
char * tok = strtok ( buf , "," );
row.col1 = atoi ( tok );
tok = strtok (NULL, "," );
row.col2 = tok ;
tok = strtok (NULL, "," );
row.col3 = atof ( tok );
13
Faça isso para todas as entradas em cada linha da CSV. A função " strtok " continuará a fornecer os dados entre os valores por vírgula até que se esgote de dados no buffer, em que ponto ele retornará NULL. Isso vai indicar que você terminou com a linha .