Ir ao conteúdo
  • Cadastre-se

C Como abrir uma planilha csv em c++


n0v1sk

Posts recomendados

Olá ,

 

Gostaria de pedir a ajuda de vcs como eu faço para abrir esta planilha, no qual ja está no formato .csv, para meu programa. Também gostaria de quebrar as virgulas e colocar espaço.

 

Entendo que para abrir um texto, necessita-se deste código.

int main(int argc, char *argv[]) {
    FILE* arquivo;
    
    arquivo = fopen("balancoAmbev", "r");
    
    if( arquivo == NULL)
    {
        printf("\nErro");
        exit(1);
    }
    
    char str[500];
    
    while(fgets(str, 500, arquivo) != NULL)
    {
        printf("%s", str);
    }
    return 0;

 

 

 

 

 

image.thumb.png.9bbecd22beeca28a5316839f1da94f00.png

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@SamuelBrev @SamuelBrev    o csv é do excel  , mas consegue abrir na linguagem  c  ,  e seu código está bom , e com algumas modificações poderia ser assim  :

#include <stdio.h>
int main(){
    FILE* arquivo,*backup;
    backup  = fopen("balancoAmbev2.csv", "a");
    if(backup == NULL)
        backup  = fopen("balancoAmbev2.csv", "w");
    arquivo = fopen("balancoAmbev.csv" , "r");

    if( arquivo == NULL)
    {
        printf("\nErro\n\n\n");
        exit(1);
    }

    char str[30];

    while(fscanf(arquivo,"%s",str) != EOF)
    {
        if(strcmp(str,",") != 0)
            fprintf(backup,"%s ",str);
        else
            fprintf(backup,"%s"," ");
        printf("%s ",str);
    }
    fclose(arquivo);
    fclose(backup);
    printf("\n\n\n");
    return 0;
}

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Documentos csv significa "comma-separated values", ou o que é o mesmo em ptbr "valores separados por vírgula" podem ter um formato como esse:

1997,Ford,E350,"ac, abs, moon",30100.00
1999,Chevy,"Venture ""Extended Edition""",,49000.00
1996,Jeep,Grand Cherokee,"MUST SELL!
air, moon roof, loaded",479699.00

Como podemos ver trata-se de simples campos de texto separados por vírgulas, o problema não estaria em ler si não em definir que tipo de estrutura teria esses dados uma vez sejam lidos. Neste exemplo podemos ver que todas as linhas possuem os mesmos campos, que são Ano,Marca,Modelo,Descrição,Preço que bem podem ser dos tipos int, string, string, string, double no qual pode caber em uma struct tal qual:

struct Dados{
    int ano;
    char marca[100];
    char modelo[100];
    char descricao[500];
    double preco;    
};

Poderia ser lido perfeitamente com fscanf.

A coisa é que você diga, ou descreva, o que são todos esses números/campos, para saber como acolher todos esses dados. Ou simplesmente você quer ler chat a chat e jogar eles na tela?

  • Curtir 2
Link para o comentário
Compartilhar em outros sites

Use strtok() para separar cada parte da string separada por vírgula, usando a vírgula como separador no strtok.

adicionado 4 minutos depois

 

Outra opção seria já pegar separado no próprio fscanf, usando especificador "%[^,\n]" por exemplo para ler 1 dado entre vírgulas por vez.

  • Curtir 3
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!