Q:

String com lixo de memória

Estou com alguns problemas ao trabalhar com arquivos e funções, o código que estou fazendo deveria imprimir uma string no arquivo, porém essa string está com lixo, e não imprime o que deve apesar de ser usada normalmente.
http://pastebin.com/JtGTDSeL
#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;
}

A leitura do arquivo é na seguinte formatação:
CGATGCATGC

Várias linhas usando apenas ATCG e a impressão no arquivo é a mesma linha seguido de um número.

A:

Primeira coisa que eu reparei
int top_IDS(int ID_DNA, char *linhas[])
{
    FILE *arquivo;
    arquivo=fopen("MEL_PIOR.txt","a");
    fflush(stdin);
    fputs(linhas,arquivo);
    ...

0) Não verificas se o fopen() funcionou correctamente
0) o fflush(stdin); não parece ter ligação com o resto do código desta função
1) fputs() aceita uma string e um FILE*, mas linhas não é uma string
Sem ler o resto do código não sei como solucionar.
Liga o máximo de warnings que o teu compilador permite. Em princípio ele devia avisar que a chamada ao fputs() é incorrecta.

Ou chamas fputs() com cada um dos elementos de linhas
for (k = 0; k < nlinhas; k++) fputs(linhas[k], arquivo);

Ou re-defines a função para aceitar uma string em vez dum array de strings
int top_IDS(int ID_DNA, char *linhas)

