Ir ao conteúdo
  • Cadastre-se

C Como salvar dados em formato .csv ?


Bruna DElia

Posts recomendados

Basta gravar os valores em um arquivo separando eles por virgula.

//http://www.cplusplus.com/reference/cstdio/fopen/
FILE *file = fopen("caminho do arquivo", "w");

char *varTexto = "texto";
int varInt = 1;
float varFloat = 3.1416;

//fprintf funciona de maneira semelhante a printf http://www.cplusplus.com/reference/cstdio/fprintf/
fprintf(file, "%s,%d,%f", varTexto, varInt, varFloat);

char *varTexto2 = "texto com , virgula";
int varInt2 = 2;
float varFloat2 = 1.2;

//Caso o campo possua virgula(,) ele deve ser gravado entre aspas.
fprintf(file, "\"%s\",%d,%f", varTexto2, varInt2, varFloat2);

//http://www.cplusplus.com/reference/cstdio/fclose/
fclose(file);

 

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

Coloquei dessa forma, mas não deu certo. Estou lendo de um arquivo de texto (arquivo), uma sequência com 5200 genes, onde cada um começa com >, a partir dele, começo a contar a, t, g ou c, faço as contas de total, porcentagem e a conta da temperatura, mas quando abro o arquivo da tabela, só aparece escrito temperatura vários vezes, sem os valores. O que pode estar errado?

 

char *varTexto="temperatura";
    while((letra=fgetc(arquivo))!=EOF){
        while(letra=='>'){
        if(letra=='A') { a++; }
        if(letra=='C') { c++; }
        if(letra=='G') { g++; }
        if(letra=='T') { t++; }
            total= a+t+c+g;
            por=((c+g)/(total))*100;
            temp= 64.9+0.41*(por)-(500/(total));
            fprintf(file, "%s,%f", varTexto, temp);
        }
    }

 

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

@Bruna DElia     nesse código  que você postou, o segundo while vai ficar em loop e não vai sair,  por que quando a variável letra for igual  " > "  , ele entra no segundo loop e como a variável letra será sempre igual a " > ", pois não é feito nenhuma outra leitura usando essa variável dentro desse loop, ele continua indefinidamente,   já o fprintf deveria gravar certo tanto a palavra temperatura como o valor da variável temp, se a variável temp for do tipo float  .

    e você quer salvar o arquivo com a extensão . csv ?    se for isso então coloque essa extensão no lugar do . txt na hora de abrir o arquivo para gravar, assim :

file = fopen("nome_do_arquivo.csv","w");

e na hora de abrir ele com o bloco de notas clique em abrir e escolha o tipo todos os arquivos, pois se você clicar nele para abrir , então ele tentará abrir o arquivo com o exel . 

   poste um exemplo de como está escrito no arquivo que você está lendo .

se no arquivo onde está escrito as sequencias de genes estiver assim :

 

5abb4bc9eed93_arquivocsv.png.ff349df18d881788081487d43ae0faad.png

então seu código com algumas modificações seria assim :

#include <stdio.h>
int main(){
    FILE *file,*arquivo;
    char varTexto[20],letra;
    float temp,por=0;
    int a,c,g,t,total;
    if(arquivo=fopen("arquivo_para_ler.txt","r") == NULL) /*isso aqui não abre o arquivo*/
        printf("erro no arquivo\n");                /* apenas verifica se existe ou não */
    else{
        strcpy(varTexto,"temperatura");
        arquivo=fopen("arquivo_para_ler.txt","r");  /*isso realmente abe o arquivo para ler*/
        file=fopen("arquivo_onde_gravar.csv","w");  /*isso realmente abe o arquivo para escrever*/
        while((letra=fgetc(arquivo))!=EOF){
            if(letra =='>'){
                while((letra=fgetc(arquivo))!='\n' && letra!=EOF){/*vai ler até o final da linha */
                                                                  /*ou final do arquivo */
                    if(letra=='A') { a++; }
                    if(letra=='C') { c++; }
                    if(letra=='G') { g++; }
                    if(letra=='T') { t++; }
                    total = a+t+c+g;
                    por   = ((c+g)/total)*100;
                    temp  = 64.9+0.41*por-(500/total);
                    fprintf(file,"%s, %.2f\n",varTexto,temp);
                }
                if(letra==EOF)break;
            }
        }
        fclose(file);
        fclose(arquivo);
    }
    printf("final . . !     Tecle");
    getch();
    return 0;
}

 

  • Curtir 2
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...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!