Ir ao conteúdo

Posts recomendados

Postado

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
Postado

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
Postado

@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

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!