Boa Tarde,  Pessoal, eu venho aqui pedir uma ajudinha com esse exercício que estou fazendo, a minha dúvida se refere a função "ordena". Preciso ordenar um vetor structs de acordo com o nome do carro, porém, não estou conseguindo trazer todos os dados do carro junto com o seu nome. Da forma como coloquei aqui estou apenas ordenando o nome, até ai tudo certo, mas sera que teria algum jeito de ordenar toda o vetor sem ficar repetindo as linhas com o strcpy??   já tentei utilizar apenas o "x" ao invés do "x.nome" porém, ele não compila.  Desde já agradeço!!!   // Exercício 7.5.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "string.h"
#include "stdlib.h"
#include "ctype.h"
typedef struct{
    int dia;
    int mes;
    int ano;
} DATA;
typedef struct{
    char marca[30];
    char nome[30];
    int ano;
    double valor_venda;
    char chassis[20];
    char combustivel;
    DATA d;
} CARRO;
void ordena(CARRO []);
int busca(char [],CARRO [],int);
void main()
{
    CARRO carros[15] = {
        {"MARCA","KA",1999,1450.54,"12345",'E',{17,1,1999}},
        {"MARCA","Kombi",1999,1450.54,"54321",'G',{17,1,1999}},
        {"MARCA","Opala",1999,1450.54,"45321",'D',{17,1,1999}},
        {"MARCA","Civic",1999,1450.54,"43215",'E',{17,1,1999}},
        {"MARCA","Fusca",1999,1450.54,"45124",'G',{17,1,1999}},
        {"MARCA","Parati",1999,1450.54,"11354",'D',{17,1,1999}},
        {"MARCA","Gol",1999,1450.54,"42135",'E',{17,1,1999}},
        {"MARCA","Uno",1999,1450.54,"55114",'D',{17,1,1999}},
        {"MARCA","Golf",1999,1450.54,"33222",'G',{17,1,1999}},
        {"MARCA","Croosfox",1999,1450.54,"14521",'D',{17,1,1999}},
        {"MARCA","Chevete",1999,1450.54,"33325",'E',{17,1,1999}},
        {"MARCA","KA",1999,1450.54,"55555",'G',{17,1,1999}},
        {"MARCA","Fusca",1999,1450.54,"44512",'G',{17,1,1999}},
        {"MARCA","Uno",1999,1450.54,"22554",'D',{17,1,1999}},
        {"MARCA","Gol",1999,1450.54,"11452",'E',{17,1,1999}},
    };
    int i;
    ordena(carros);
    int m = busca("12345",carros,15); //usuario irá digitar um chassis, para encontrar o carro
    if( m != -1)    
        printf("Carro: %s",carros[m].nome); //Mostra o carro de acordo com o chassis encontrado
    
    getchar();
}
void ordena(CARRO x[])
{
    bool ordenado=true;
    char aux[30];
    int i,tam=15;
    do{
        ordenado = true;
        for(i=0; i<tam; i++)
        {
            if(stricmp(x[i].nome, x[i + 1].nome) > 0)
            {
                strcpy(aux, x[i].nome);
                strcpy(x[i].nome, x[i + 1].nome);
                strcpy(x[i + 1].nome, aux);
                ordenado=false;
            }
        }
        tam--;
    }while (ordenado==false);
    for(i=0;i<15;i++) //Mostra os carros em ordem alfabetica
    {
        printf("nome: %s",x[i].nome);
        printf("\n");
    }
}
int busca(char nome[],CARRO L[],int n)
{
    int i, f, m,compare;
    i = 0;
    f = n-1;
    while(i <= f)
    {
        m = (i+f)/2;
        compare = strcmp(nome,L[m].chassis);
        if(strcmp(nome,L[m].chassis) == 0)
            return m;
        if(strcmp(nome,L[m].chassis) < 0)
            f = m-1;
        else
            i = m+1;
    }
    return -1;
}