Ciao , ho fatto questo programma ma ho qualche problema nell'ultima fase di ordinamento:
codice:

#include <stdio.h>
#define n 100

struct prenotazione{
    struct cog_nome{
        char cognome[15];
        char nome[15];
    }cog;
    int giorno;
    char mese[10];
    int stanza;
    int notti;
}preno[n], pre[n];

int main()
{
    int i, j, k, v, y, app;
    char buffer[15];

    FILE *cfPtr;

    if ((cfPtr = fopen("clienti.dat", "w")) == NULL ) {
        printf("Il file non può essere aperto.\n");
    } else {
        i = 0;
        printf("Inserisci cognome, nome, giorno e mese di inizio permanenza, nmero stanza e numero notti : \n");
        printf("Inserisci EOF per terminare\n");
        scanf(" %s%s%d%s%d%d\n", preno[i].cog.cognome, preno[i].cog.nome, &preno[i].giorno, preno[i].mese, &preno[i].stanza, &preno[i].notti);
        fprintf(cfPtr, "%35s", "PRENOTAZIONI\n\n");
        fprintf(cfPtr, "%10s %10s %10s %10s %8s %7s", "COGNOME", "NOME", "GIORNO", "MESE", "STANZA", "NOTTI\n");
        fprintf(cfPtr, "%10s %10s %10d %10s %8d %6d\n", preno[i].cog.cognome, preno[i].cog.nome, preno[i].giorno, preno[i].mese, preno[i].stanza, preno[i].notti);
        while (!feof(stdin)) {
            i++;
            scanf(" %s%s%d%s%d%d\n", preno[i].cog.cognome, preno[i].cog.nome, &preno[i].giorno, preno[i].mese, &preno[i].stanza, &preno[i].notti);
            fprintf(cfPtr, "%10s %10s %10d %10s %8d %6d\n", preno[i].cog.cognome, preno[i].cog.nome, preno[i].giorno, preno[i].mese, preno[i].stanza, preno[i].notti);
        }
        fclose(cfPtr);
    }

    printf("%d", i);

    printf("\n\n");
    printf("%35s", "PRENOTAZIONI\n\n");
    printf("%10s%10s%10s%10s%8s%7s", "COGNOME", "NOME", "GIORNO", "MESE", "STANZA", "NOTTI\n");
    for ( j = 0; j <= i; j++ ) {
        printf("%10s%10s%10d%10s%8d%6d\n", preno[j].cog.cognome, preno[j].cog.nome, preno[j].giorno, preno[j].mese, preno[j].stanza, preno[j].notti);

    }

    j = 0;
    for ( k = 0; k <= i; k++ ) {
        if ( preno[k].stanza == 12 && strcmp(preno[k].mese, "aprile") == 0) {
                strcpy(pre[j].cog.cognome, preno[k].cog.cognome);
                strcpy(pre[j].cog.nome, preno[k].cog.nome);
                pre[j].giorno = preno[k].giorno;
                strcpy(pre[j].mese, preno[k].mese);
                pre[j].stanza = preno[k].stanza;
                pre[j].notti = preno[k].notti;
                j++;
        }
    }

    y = i;

    printf("\n\n");
    printf("%38s", "PRENOTAZIONI APRILE DELLA STANZA 12\n\n");
    printf("%10s%10s%10s%10s%8s%7s", "COGNOME", "NOME", "GIORNO", "MESE", "STANZA", "NOTTI\n");
    for ( i = 0; i < j; i++ ) {
        printf("%10s%10s%10d%10s%8d%6d\n", pre[i].cog.cognome, pre[i].cog.nome, pre[i].giorno, pre[i].mese, pre[i].stanza, pre[i].notti);

    }


    for ( k = 0; k < y; k++ ) {
        for ( j = k + 1; j <= y; j++ ) {
            if ( preno[k].stanza == 12 && strcmp(preno[k].mese, "aprile") == 0 && preno[j].stanza == 12 && strcmp(preno[j].mese, "aprile") == 0) {
                if ( preno[k].giorno > preno[j].giorno) {
                    strcpy(buffer, preno[k].cog.cognome);
                    strcpy(preno[k].cog.cognome, preno[j].cog.cognome);
                    strcpy(preno[j].cog.cognome, buffer);
                    strcpy(buffer, preno[k].cog.nome);
                    strcpy(preno[k].cog.nome, preno[j].cog.nome);
                    strcpy(preno[j].cog.nome, buffer);
                    app = preno[k].giorno;
                    preno[k].giorno = preno[j].giorno;
                    preno[j].giorno = app;
                    strcpy(buffer, preno[k].mese);
                    strcpy(preno[k].mese, preno[j].mese);
                    strcpy(preno[j].mese, buffer);
                    app = preno[k].stanza;
                    preno[k].stanza = preno[j].stanza;
                    preno[j].stanza = app;
                    app = preno[k].notti;
                    preno[k].notti = preno[j].notti;
                    preno[j].notti = app;
                }
            }
        }

    }

    printf("\n\n");
    printf("%50s", "PRENOTAZIONI DELLA STANZA 12 NEL MESE DI APRILE IN ORDINE CRESCENTE DI DATA\n\n");
    printf("%10s%10s%10s%10s%8s%7s", "COGNOME", "NOME", "GIORNO", "MESE", "STANZA", "NOTTI\n");
    for ( k = 0; k <= y; k++ ) {
        printf("%10s%10s%10d%10s%8d%6d\n", preno[k].cog.cognome, preno[k].cog.nome, preno[k].giorno, preno[k].mese, preno[k].stanza, preno[k].notti);

    }

 return 0;
}
precisamente in questa parte
codice:
 for ( k = 0; k < y; k++ ) {
        for ( j = k + 1; j <= y; j++ ) {
             if ( preno[k].stanza == 12 && strcmp(preno[k].mese, "aprile")  == 0 && preno[j].stanza == 12 && strcmp(preno[j].mese,  "aprile") == 0) {
                if ( preno[k].giorno > preno[j].giorno) {
                    strcpy(buffer, preno[k].cog.cognome);
                    strcpy(preno[k].cog.cognome, preno[j].cog.cognome);
                    strcpy(preno[j].cog.cognome, buffer);
                    strcpy(buffer, preno[k].cog.nome);
                    strcpy(preno[k].cog.nome, preno[j].cog.nome);
                    strcpy(preno[j].cog.nome, buffer);
                    app = preno[k].giorno;
                    preno[k].giorno = preno[j].giorno;
                    preno[j].giorno = app;
                    strcpy(buffer, preno[k].mese);
                    strcpy(preno[k].mese, preno[j].mese);
                    strcpy(preno[j].mese, buffer);
                    app = preno[k].stanza;
                    preno[k].stanza = preno[j].stanza;
                    preno[j].stanza = app;
                    app = preno[k].notti;
                    preno[k].notti = preno[j].notti;
                    preno[j].notti = app;
                }
            }
        }

    }

    printf("\n\n");
    printf("%50s", "PRENOTAZIONI DELLA STANZA 12 NEL MESE DI APRILE IN ORDINE CRESCENTE DI DATA\n\n");
    printf("%10s%10s%10s%10s%8s%7s", "COGNOME", "NOME", "GIORNO", "MESE", "STANZA", "NOTTI\n");
    for ( k = 0; k <= y; k++ ) {
         printf("%10s%10s%10d%10s%8d%6d\n", preno[k].cog.cognome,  preno[k].cog.nome, preno[k].giorno, preno[k].mese, preno[k].stanza,  preno[k].notti);

    }
non capisco non mi esegue le condizioni e non mi metta in ordine di giorno..