Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Bruna DElia

C Como salvar dados em formato .csv ?

Recommended Posts

Estou fazendo um cálculo de temperatura e tenho que salvar em formato de planilha eletrônica.csv esses dados em c, como faço?

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual o tipo da variável temp?

 

Também poderia disponibilizar ao menos parte do arquivo? Assim poderei auxiliá-la melhor.

Editado por HwapX
  • Curtir 2

Compartilhar este post


Link para o post
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;
}

 

Editado por devair1010
  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

@devair1010 entendi, então o problema era dentro desse while mesmo, como não tinha conseguido arrumar, fiz em matlab, mas vou testar aq com o arquivo completo. Obrigada :)

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×