Problem z wyświetlaniem wielkich liter w przypadku struktur

0

Hej, mam mały problem.
Robię program oparty na strukturach pobierający, sortujący i wyświetlający nazwy minerałów.
Wejście udało mi się całkiem sprawnie zrobić, ale mam problem z sortowaniem.
Przy sortowaniu zauważyłem, że pierwsza wielka litera nazwy państwa wyświetla mi się w dość dziwny sposób, jako nawias klamrowy.
Szczerze mówiąc nie mam pojęcia o co chodzi, a nawet google nie chce mi pomóc (albo nie potrafię się go sprawnie zapytać).
Prosiłbym o pomoc z tym problemem i gdybyście mogi to sprawdzić czy sortowanie alfabetyczne przy pomocy nazwy państwa jest dobre.
Funkcje puts wstawiłem po to, aby zlokalizować problem.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

//Deklaruje strukture m
struct m {
    char nazwa[20];
    char wzorchem[10];
    char dzial[15];
    long int numer;
    };

//Prototypy moich funkcji
void wprowadz(struct m mineraly[]);
void sortuja (struct m mineraly[]);
void sortujb (struct m mineraly[]);
void wyswietl(struct m mineraly[]);
char wybierzmenu(void);

int main()
{
    struct m mineraly[50];
    printf("Witaj w programie do gromadzenia danych na temat mineralow\n"
           "Jezeli chcesz wprowadzic dane wpisz \"a\" \n"
           "Jezeli chcesz poprawic jakis element wpisz \"b\"\n"
           "Jezeli chcesz wyswietlic elementy listy wpisz \"c\"\n"
           "Jezeli chcesz wyjsc z programu wpisz \"d\"\n");

         wprowadz(mineraly);
         for(int i=0; i<2; i++)
            puts(mineraly[i].dzial);

         sortuja(mineraly);

         for(int i=0; i<2; i++)
            puts(mineraly[i].dzial);

    return 0;
}

void wprowadz(struct m mineraly[50])
{

//Muszê tak to zrobiæ, aby index wskazywa³ mi pierwsz¹ pust¹ komórkê
    int index;
    char probnanazwa[30];
    char probnywzor[10];
    char probnep[15];
    int c;  //zmienna do czyszczenia wejœcia
    int d; //zmienna do z³ych znaków
    long int numer=-1;
    for(int i=0; i<50; i++)
    {
        index=i;
        if(strlen(mineraly[i].nazwa)==0)
            break;
    }
    //DZIA£A!

    for(int i=index; i<50; i++)//petla do wprowadzania danych
    {
        printf("Wprowadz nazwe, masz na to maksymalnie 19 znakow.\n");


    fgets(probnanazwa, 30, stdin);
        if(probnanazwa[0]==' ')
            goto spacja;
    while(1)
        {if(strlen(probnanazwa)>19)
            {printf("Twoja nazwa jest za dluga, nazwa moze miec maks 19 znakow\n");
            while ((c = getchar()) != '\n');
            }
              if(probnanazwa[0] == '\n')
                d=-1;
        for(int i=0; i<strlen(probnanazwa)-1; i++ )
            {int e=probnanazwa[i];
            if(e<97||e>122 )
                d=-1;
            if(e==32)
                d=0;
            }
            if(d==-1)
                printf("Nazwa zawiera niedozwolone znaki, uzywaj malych liter z lacinskiego alfabetu.\n");

        if(strlen(probnanazwa)<20 && d!=-1)
        break;
        d=0;
        fgets(probnanazwa, 30, stdin);
        if(probnanazwa[0]==' ')
            goto spacja;
        }
    strcpy(mineraly[i].nazwa, probnanazwa);



    //Teraz czas na wzor

    printf("Wprowadz wzor, masz na to maksymalnie 9 znakow.\n");

    fgets(probnywzor, 15, stdin);
    while(1)
        {if(strlen(probnywzor)>10)
            {printf("Twoj wzor jest za dlugi lub zawiera zle znaki,\nwzor moze miec maks 9 znakow i skladac sie\n z liter alfabetu lacinskiego oraz z cyfr\n");
            while ((c = getchar()) != '\n');
            }
            if(probnywzor[0] == '\n')
                d=-1;
        for(int i=0; i<strlen(probnywzor)-1; i++ )
            {int e=probnywzor[i];
            if(!((e>47&&e<58)|| (e>64&&e<91) || (e>96&&e<123)))
                d=-1;
            }
            if(d==-1)
                printf("Wzor zawiera niedozwolone znaki,\n uzywaj liter z lacinskiego alfabetu oraz cyfr.\n");

        if(strlen(probnywzor)<10 && d!=-1)
        break;
        d=0;
        fgets(probnywzor, 15, stdin);
        }
    strcpy(mineraly[i].wzorchem, probnywzor);

    printf("Wprowadz nazwe dzialu (panstwo), masz na to maksymalnie 14 znakow.\n");

    //Teraz czas na nazwe dzialu
    fgets(probnep, 20, stdin);
    while(1)
        {if(strlen(probnep)>15)
            {printf("Twoja nazwa dzialu (panstwa) jest za dluga lub zawiera zle znaki,\nnazwa moze miec maks 14 znakow i skladac sie\n z liter alfabetu lacinskiego w tym pierwszej wielkiej\n");
            while ((c = getchar()) != '\n');
            }
            if(probnep[0] == '\n')
                d=-1;
            int f = probnep[0];
            if(!(f>64&&f<91))
                d=-1;
        for(int i=1; i<strlen(probnep)-1; i++)
            {int e=probnep[i];
            if(!(e>96&&e<123))
                d=-1;
            }
            if(d==-1)
                printf("Nazwa zawiera niedozwolone znaki,\n uzywaj liter z lacinskiego alfabetu\nw tym pierwsza musi byc wielka\n");

        if(strlen(probnep)<15 && d!=-1)
        break;
        d=0;
        fgets(probnep, 20, stdin);
        }

    strcpy(mineraly[i].dzial, probnep);

    printf("Wprowadz pieciocyfrowy numer identyfikacyjny.\n");


    scanf("%ld", &numer);
    while(1)
        {if(numer>99999 || numer<0)
            {printf("Twoj numer jest za wysoki lub wpisales nieprawidlowe dane, wpisz 5 cyfr\n");
            while ((c = getchar()) != '\n');
            }


        if(numer<100000 && numer>=0)
        break;
        scanf("%ld", &numer);
        }

    *mineraly[i].dzial=numer;

     while ((c = getchar()) != '\n');


    }
   spacja: printf("Zakonczono wprowadzanie danych");

}


void sortuja(struct m mineraly[])
{
    struct m temp;
    int index;
    for(int i=0; i<50; i++)
    {
        index=i;
        if(strlen(mineraly[i].nazwa)==0)
            break;
    }

    int i, j;
    char value[15];

    for (i = 1; i <= index; ++i)
    {
        temp = mineraly[i];
        puts(mineraly[i].dzial);
        strcpy(value, mineraly[i].dzial);
        for (j = i - 1; j >= 0 && strcmp(mineraly[j].dzial, value) ==1; --j)
        {
            mineraly[j + 1] = mineraly[j];
           puts(mineraly[j].dzial);
        }

        mineraly[j + 1] = temp;
        puts(temp.dzial);
    }
}
0

Dobra panie i panowie, nie czytajcie proszę tych wypocin. Zestresowałem się i bezsensu na głupa wstawiłem post.
Proszę moda o usunięcie wątku, a społeczność pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1