Manipulação de arquivos CSV - Estruturado
Publicado por Fagner Amaral de Souza Candido (última atualização em 12/12/2010)
[ Hits: 25.311 ]
Homepage: https://github.com/fagnercandido
Olá PessoALL,
O aplicativo a seguir tem por finalidade manipular arquivos CSV com a linguagem C. São funções básicas que, com toda certeza, podem e muito ser melhoradas. Mas de qualquer forma, demonstram uma possível forma de manipulação de arquivos CSV com a linguagem C.
Qualquer dúvida, crítica ou sugestão é só mandar.
f_Candido
/* * Sintese * Objetivo : Manipular arquivos CSV em C * Entrada : Um arquivo CSV * Saida : Um arquivo CSV * Autor : Fagner Candido - f_Candido - fagner7777777@gmail.com * */ #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LENGHT 100 #define MAX_STRING 3*MAX_LENGHT #define MAX_LINE 100 // Tipo correspondente ao CSV typedef struct fileCSV{ char fNome[MAX_LENGHT]; char mNome[MAX_LENGHT]; char lNome[MAX_LENGHT]; }fileCSV; // Open no Arquivo - Leitura void fileOpenRead(FILE **pArquivo){ if (!(*pArquivo=fopen("teste","r"))){ printf("Erro ao Abrir Arquivo!!\n"); } } // Open no Arquivo - Escrita void fileOpenWrite(FILE **pArquivo){ if (!(*pArquivo=fopen("teste","a+"))){ printf("Erro ao Abrir Arquivo!!\n"); } } // Write no Arquivo void writeFile(FILE **pArquivo, char *dados){ fprintf(*pArquivo, "%s" , dados); } // Read no Arquivo int readFile(FILE **pArquivo, char stringOutput[MAX_LINE][MAX_STRING]){ int contador = 0; while (!feof(*pArquivo)) { fscanf(*pArquivo,"%s", stringOutput[contador]); contador++; } return contador; } // Close no Arquivo void closeFile(FILE **pArquivo){ fclose(*pArquivo); } // Read Entradas void readInputs(fileCSV *registro){ printf("Informe o primeiro Nome\n"); fgets(registro->fNome, MAX_LENGHT, stdin); printf("Informe o segundo Nome\n"); fgets(registro->mNome, MAX_LENGHT, stdin); printf("Informe o ultimo Nome\n"); fgets(registro->lNome, MAX_LENGHT, stdin); } //Mount arquivo CSV void mountInput(char *stringInput, fileCSV registro){ int len; strcat(stringInput, registro.fNome); len = strlen(stringInput); stringInput[len-1] = ','; stringInput[len] = '{FONTE}'; strcat(stringInput, registro.mNome); len = strlen(stringInput); stringInput[len-1] = ','; stringInput[len] = '{FONTE}'; strcat(stringInput, registro.lNome); } int main(int argc, char **argv){ fileCSV registro; int contador = 0, auxiliar; char stringInput[MAX_STRING]; char stringOutput[MAX_LINE][MAX_STRING]; FILE *pArquivo; readInputs(®istro); mountInput(stringInput, registro); fileOpenWrite(&pArquivo); writeFile(&pArquivo, stringInput); closeFile(&pArquivo); fileOpenRead(&pArquivo); auxiliar = readFile(&pArquivo, stringOutput); for(;contador <= auxiliar;contador++){ printf("Registros : %s\n", stringOutput[contador]); } closeFile(&pArquivo); return 0; }
Editar o arquivo /etc/rc.d/rc.local
Função readConf. Ler arquivos de configuração.
Pra quem contribui com artigos e dicas (1)
Arch Linux - Guia para Iniciantes (5)
tux-gpt - Assistente de IA para o Terminal
Instalação e configuração do Chrony
Programa IRPF - Guia de Instalação e Resolução de alguns Problemas
O Que Fazer Após Instalar Ubuntu 25.04
O Que Fazer Após Instalar Fedora 42
Debian 12 -- Errata - Correções de segurança
Instalando o Pi-Hole versão v5.18.4 depois do lançamento da versão v6.0
Monitor fora de escala ao bootar sistema (10)
Pra quem contribui com artigos e dicas (1)
Alguém poderia me ajudar a escolher peças pra montar um desktop? (19)