Die antwort von xin hatte ich noch nicht gesehn als ich das hier getippt hab
danke dafür auf jeden fall
Dazu noch als ich die rechenoperationen in struct reingeschrieben habe habe ich das auch erstmal getestet und habe die richtigen Werte geliefert bekommen. gehört das so oder ist da was verkehrt 
 
 
Ok schonmal danke für den Hinweis mit dem Großschreiben.
Das mit dem Präprozessor war mir relativ klar es ging nur darum deutlich zu machen was ich für einen befehl brauche(auch wenn das nicht wircklich funktioniert hat^^) und mir fiel nichts besseres als vergleich ein als define.
Großgeschrieben habe das ich einfach nur um alles was ich mit struct gemacht habe etwas hervorzuheben.
Hier der ganze code den ich bisher geschrieben habe:
Code: Alles auswählen
#include <stdio.h>
struct Ressi
{
    int MOMENTAN;
};
struct Gebaeude
{
    int STUFE;
    int GOLDKOSTEN;
    int STEINKOSTEN;
    int ARBEITSAUFWAND;
    int PRESTIGE;
    int PUNKTE;
};
int main()
{
    int  i, rundenzahl, bestaetiger, punkte;
    char spielername[15];
    struct Ressi GOLD;
    struct Ressi STEIN;
    struct Ressi ARBEITER;
    struct Ressi PRESTIGE;
    GOLD.MOMENTAN = 500;
    STEIN.MOMENTAN = 1000;
    ARBEITER.MOMENTAN = 10;
    PRESTIGE.MOMENTAN = 100;
                    /* es gibt6 gebäudearten:
                    (0:Alee),(1:Gärten),(2:Mauern),
                    (3:Haupthaus),(4:Wohnflügel),
                    (5:Prunkflügel) */
    struct Gebaeude ALEE =
{
    0,//Stufe
    10*(ALEE.STUFE+1),//Goldkosten
    10*(ALEE.STUFE+1),//Steinkosten
    20*(ALEE.STUFE+1),//Arbeitsaufwand
    10*(5*(ALEE.STUFE+1)),//Prestige
    ALEE.PRESTIGE/10//Punkte
};
    struct Gebaeude GAERTEN =
{
    0,//Stufe
    50*(GAERTEN.STUFE+1)+200,//Goldkosten
    5*(GAERTEN.STUFE+1),//Steinkosten
    10*(GAERTEN.STUFE+1),//Arbeitsaufwand
    8*(5*(GAERTEN.STUFE+1)),//Prestige
    GAERTEN.PRESTIGE/10//Punkte
};
    struct Gebaeude MAUERN =
{
    0,//Stufe
    0*(MAUERN.STUFE+1),//Goldkosten
    50*(MAUERN.STUFE+1),//Steinkosten
    25*(MAUERN.STUFE+1),//Arbeitsaufwand
    30*(5*(MAUERN.STUFE+1)),//Prestige
    MAUERN.PRESTIGE/10//Punkte
};
    struct Gebaeude HAUPTHAUS =
{
    0,//Stufe
    1000*(HAUPTHAUS.STUFE+1),//Goldkosten
    1000*(HAUPTHAUS.STUFE+1),//Steinkosten
    100*(HAUPTHAUS.STUFE+1),//Arbeitsaufwand
    425*(5*(HAUPTHAUS.STUFE+1))-125,//Prestige
    HAUPTHAUS.PRESTIGE/10//Punkte
};
    struct Gebaeude WOHNFLUEGEL =
{
    0,//Stufe
    500*(WOHNFLUEGEL.STUFE+1),//Goldkosten
    2000*(WOHNFLUEGEL.STUFE+1),//Steinkosten
    80*(WOHNFLUEGEL.STUFE+1),//Arbeitsaufwand
    300*(5*(WOHNFLUEGEL.STUFE+1)),//Prestige
    WOHNFLUEGEL.PRESTIGE/10//Punkte
};
    struct Gebaeude PRUNKFLUEGEL =
{
    0,//Stufe
    2500*(PRUNKFLUEGEL.STUFE+1),//Goldkosten
    500*(PRUNKFLUEGEL.STUFE+1),//Steinkosten
    75*(PRUNKFLUEGEL.STUFE+1),//Arbeitsaufwand
    325*(5*(PRUNKFLUEGEL.STUFE+1)),//Prestige
    PRUNKFLUEGEL.PRESTIGE/10//Punkte
};
 printf("In diesem Spiel ist man ein Architekt\nder mit einem anderen um den Bau eines Palastes konkuriert.\nEine ausfuehrliche Beschreibung folgt spaeter.\n");
        for (i=0;i==0;i++)
        {
        printf("\nWie ist Euer Name? ");
        scanf("%s",&spielername);
        printf("\nIst Euer Name : %s?",spielername);
        printf("\nDruecke 0 fuer Nein und 1 fuer Ja\n");
        scanf("%d",&bestaetiger);
            switch (bestaetiger)
            {
                case 0: --i;
                case 1: break;
            }
        }
    printf("\nWieveile Runden wollt ihr spielen?: ");
    scanf("%d",&rundenzahl);
    printf("\nIhr spielt %d Runden",rundenzahl);
            for (i=0;i<rundenzahl;i++)
        {
        printf("\n\nWas wollt ihr tun?");
        printf("\n0: Rohstoffe verwalten\n1: Palast ausbauen\n2: Steinbrueche ausbauen/verwalten\n3: Arbeiter einstellen\n4: Prestiege in Gold umwandeln\n");
        scanf("%d",&bestaetiger);
        switch (bestaetiger)
        {
           case 0: printf("\nGold: %d\nSteine: %d\nArbeiter: %d\nPrestige: %d\n", GOLD.MOMENTAN, STEIN.MOMENTAN, ARBEITER.MOMENTAN, PRESTIGE.MOMENTAN);
                    --i;
                    break;
           case 1: printf("\nIhr koennt folgende Gebauede Bauen:");
                    printf("\nAlee Stufe: %d ausbauen (0)\nGaerten Stufe: %d ausbauen(1)\nMauern Stufe: %d ausbauen (2)\nHaupthaus Stufe: %d ausbauen (3)\nWohnfluegel Stufe %d ausbauen (4)\nPrunkfluegel Stufe %d ausbauen (5)", ALEE.STUFE, GAERTEN.STUFE, MAUERN.STUFE, HAUPTHAUS.STUFE, WOHNFLUEGEL.STUFE, PRUNKFLUEGEL.STUFE);
                    printf("\nWas wollt ihr bauen? ");
                    scanf("%d",&bestaetiger);
                        switch (bestaetiger)
                        {
                            case 0: printf("\nIhr wollt die [color=#FF0000]Alee[/color] bauen.");
                            printf("\nDas kostet %d Gold und %d Stein", [color=#FF0000]ALEE[/color].GOLDKOSTEN,[color=#FF0000]ALEE[/color].STEINKOSTEN);
                            printf("\nEs wuerde %d Prestige einbringen", [color=#FF0000]ALEE[/color].PRESTIGE);
                            printf("\nbestaetigen ? 0 fuer nein 1 fuer ja");
                            scanf("%d",&bestaetiger);
                            switch (bestaetiger)
                            {
                            case 0: --i;
                            break;
                            case 1: break;
                            }
                        }
                    break;
           default: printf("\nUngueltige Eingabe!");
                    --i;
                    break;
        }
        }
    printf("Das spiel ist zu ende Eure Punktzahl ist: %f",punkte);
 return 0;
}
SO jetzt nochmal. Die unterste switch anweisung wird noch um mehrere cases erweitert, und zwar bis case 5
dabei bleibt der inhalt jedes cases gleich bis auf die dinge die ich versucht habe rot einzufärben(geht leider nicht weil sie im code sind aber ich hoffe das es trozdem deutlich genug ist).
Ginge es nur darum das noch 4 mal etwas abgewandelt zu kopieren würde ich hier nicht so einen tertz machen und das einfach kopieren und ersetzen. Jedes case wird aber noch wohl um ein par sachen erweitert werden in denen es wieder nur um minimale änderungen geben wird (ähnlichen dennen die ich beschrieben hab(aus MAUER eird GAERTEN)).
Außerdem würde ich auch gerne aus prinzip wissen ob man einen Teil des namens einer Variable, in einem bestimten bereich  ersetzen kann, ich kann mir vorstellen das mir das noch öfter nützen könnte 

 wenn sowas denn geht .
Vielleicht wird es so deutlicher
Ich brauche einen befehl der folgendes macht:
Ersetzte 
MAUER durch 
GAERTEN
{
MAUER.KOSTEN = 1;
MAUER.HÖHE = 1;
}
und rauskommen soll:
GAERTEN.KOSTEN = 1;
GAERTEN.HÖHE = 1;
das beispiel ist jetzt vllt nicht ganz so super aber ich hoffe es macht das ganze etwas verständlicher 
Jeder andere Lösungsvorschlag der eleganter ist ist mir auch sehr willkomen.