Como ler um arquivo CSV em C

Muitos programas de software que podem lidar com números e cálculos podem fornecer dados em um arquivo CSV (valores separados por vírgula). Esse formato pode ser uma maneira eficaz de transportar dados entre vários programas, pois pode ser facilmente lido e manipulado. Muitos programas C que usam dados certamente lerão um arquivo CSV em algum momento.

Passo 1

Verifique a documentação do programa que fornecerá o arquivo CSV. Descubra o número de campos em cada linha, bem como o formato de cada campo. Por exemplo, se o programa fornecer um CSV com esses dados: 1, “test”, 34.5 Você marcaria 3 campos: um inteiro, uma sequência e um número de ponto flutuante.

Etapa 2

Crie uma estrutura que registre os dados de um membro de cada campo identificado no CSV. Usando a linha do exemplo 1, “test”, 34.5, você precisará desta estrutura: {int col1; char * col2; flutuador col3; };

Etapa 3

Crie um método no seu programa que lide com a leitura de arquivos CSV. Isso deve ser acessível no restante do programa, e você certamente precisará trabalhar com estruturas de dados normais para que o restante dos métodos possa acessar os dados que foram lidos. Passe o parâmetro por referência para não precisar retornar um valor. Um exemplo de protótipo de função seria: void ParseCSV (char * nome do arquivo, dados e entrada);

Etapa 4

Inclua o cabeçalho de E / S padrão usando este código:

incluir

Adicione esse código na parte superior do arquivo de origem que o CSV lerá.

Etapa 5

Inclui a biblioteca de cadeias para permitir a manipulação de dados CSV usando este código:

incluir

Adicione esse código na parte superior do arquivo de origem que o CSV lerá.

Etapa 6

Crie um objeto de arquivo, que lerá os dados, usando este código: FILE * pInput;

Etapa 7

Crie um buffer de caracteres grande o suficiente para salvar uma linha no arquivo. Devido às limitações do idioma, a maneira mais fácil de fazer isso é declarar um vetor de caracteres com um tamanho grande o suficiente, como em:

definir BUFFER_SIZE 1024

char buf [BUFFER_SIZE];

Etapa 8

Abra o arquivo com este código e atribua-o ao seu objeto FILE criado antes: objeto FILE: pInput = fopen (“filename,” “r”)

Etapa 9

Leia uma linha do arquivo com este código: fgets (buf, sizeof (buf), pInput)

Etapa 10

Analise o CSV usando a função “strtok”. Crie uma nova sequência de caracteres para apontar para os elementos e inicialize-a com os dados da linha lida antes: char * tok = strtok (buf, “,”)

Etapa 11

Converta o item recebido em dados apropriados. Use a linha de exemplo: 1, “test”, 3,45 Converta os dados de “tok” em um número inteiro usando este código: row.col1 = atoi (tok);

Etapa 12

Para mais leituras da mesma linha, passe um parâmetro NULL para “strtok” em vez da string de buffer lida antes: tok = strtok (NULL, “,”) Em seguida, converta o item no tipo de dados apropriado. Use o exemplo da linha 1, “test”, 3,45. O código de análise para uma linha seria: char * tok = strtok (buf, “,”); row.col1 = atoi (tok); tok = strtok (NULL, “,”); row.col2 = tok; tok = strtok (NULL, “,”); row.col3 = atof (tok);

Etapa 13

Faça isso para todas as entradas em cada linha do CSV. A função “strtok” continuará fornecendo dados entre valores de vírgula até que não haja mais dados no buffer, quando retornará NULL. Isso indica que você terminou a linha.

Referências

 

Você pode estar interessado:

Deixe um comentário