I have some problems when working with files and functions, the code I'm doing should print a string in the file, but that string is garbage, and does not print which should in spite of being used normally.
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define MAIOR_ID 0
int top_IDS(int ID_DNA, char *linhas[])
{
FILE *arquivo;
arquivo=fopen("MEL_PIOR.txt","a");
fflush(stdin);
fputs(linhas,arquivo);
fprintf(arquivo,"\t%i\n",ID_DNA);
fclose(arquivo);
return 0;
}
int calcular_peso(char lin_1[],int *qtd_g, int *qtd_c)
{
int i=0;
int soma_pesos=0,I_D=0;
int qt,qt2;
gets(lin_1);
for(i=0; i<10; i++)
{ if(lin_1[i]=='A' || lin_1[i]=='T')
soma_pesos+=3;
else
soma_pesos+=7;
}
qt = *qtd_g;
qt2 = *qtd_c;
I_D=(soma_pesos+qt+qt2);
printf("\tI_D: %i\n",I_D);
if(I_D<50)
printf("\tTem propencao a doencas cardiacas\n");
else if(I_D>50)
printf("\tTem propencao a doencas respiratorias\n");
else
printf("\tNada se pode afirmar sobre suas propencao as doencas \n");
top_IDS(I_D,&lin_1);
return 0;
}
int habilidades(int soma_guanina,int soma_adenina)
{
if(soma_adenina>10)
printf("\tTem propensäo a atividades esportivas\n");
else if(soma_guanina>10)
printf("\tTem propensäo a atividades artisticas\n");
else
printf("\tNada se pode afirmar sobre suas habilidades\n");
return 0;
}
int cria_complementar(char ler_linha[],char complementar[])
{
int contador=0;
int qtd_A=0,qtd_T=0,qtd_C=0,qtd_G=0;
int soma_AT=0,soma_CG=0;
for(contador=0; contador<10; contador++)
{
if(ler_linha[contador]=='A')
{
complementar[contador]='T';
qtd_A++;
}
else if(ler_linha[contador]=='T')
{
complementar[contador]='A';
qtd_T++;
}
else if(ler_linha[contador]=='C')
{
complementar[contador]='G';
qtd_C++;
}
else
{
complementar[contador]='C';
qtd_G++;
}
}
printf("\t");
soma_AT=(qtd_A+qtd_T);
soma_CG=(qtd_C+qtd_G);
for(contador=0; contador<10; contador++)
{
printf("%c",complementar[contador]);
}
printf("\n\tA:%i T:%i C:%i G:%i",soma_AT,soma_AT,soma_CG,soma_CG);
printf("\n\tA:%i%% T:%i%% C:%i%% G:%i%%\n\n",(soma_AT*100)/20,(soma_AT*100)/20,(soma_CG*100)/20,(soma_CG*100)/20);
habilidades(soma_CG,soma_AT);
calcular_peso(ler_linha,&qtd_G,&qtd_C);
return 0;
}
int main()
{
char bases[11],base_2[11];
FILE *arquivo;
arquivo = fopen("DNAS.txt","r");
if(arquivo==NULL)
{
printf("O arquivo nao pode ser lido\n");
system("pause");
return 0;
}
while(fgets(bases,11,arquivo)!=NULL)
{
printf("\n");
fgetc(arquivo);
printf("\t%s\n",bases);
cria_complementar(bases,base_2);
system("pause");
system("cls");
}
fclose(arquivo);
return 0;
}
The file reading is in the following format:
CGATGCATGC
Multiple lines using ATCG only, and the printout in the file is the same line followed by a number.