Problem



  • Ich hoffe das es das richtige Forum ist.Ich bin nähmlich neu hier.
    Ich hab nen Problem mit einem Programm und zwar ist immer ein Fehler drin die meldung Lautet: install.c: undefined reference to `fertig'
    Ich weis das es was mit dem "int main" zu tun hat.Ich habe main,Main,fertig.
    Ich weiß leider nich woran es liegt.



  • wie heißt das ding, wo kann man es sich runterladen?

    meine kristallkugel ist vom vielen raten ziemlich trüb geworden und is grad in reparatur. sorry dass ich nicht besser helfen kann.



  • Den Qeltext?

    #include <stdio.h>
    #include <conio.h>

    void Main();
    void fertig();

    int main()
    {
    int a;

    printf("Wollen sie das Instalation programm ausfhren?\n1 Ja oder 2 Nein\nBitte Zahl eingeben:");
    scanf("%d",&a);
    if (a==1)
    {
    Main();
    }
    else
    printf("Installation abgebrochen!");
    getch();
    }

    void Main()
    {
    FILEdatei;
    datei=fopen("**.txt","w+");
    fprintf(datei,"-------------------------------------------");
    fertig();
    }
    void fertig()
    {
    FILE
    datei;
    datei=fopen(".txt","w+");
    fprintf(datei, "Willkommen beim ** Programm.\nBitte schreiben sie an mir falls Fehler\nauftreten sollten.\nEmail:
    \nDanke.");
    printf("Komponenten werden installiert.\n");
    printf("Fertig!");
    getch();
    }

    leider ist er ein bisschen verrück hier im Forum.
    Hoffe das war es was du meinst.



  • Hinter der } von der Main()-Funktion ist irgendein komisches Zeichen was da nicht hingehört (man sieht es gar nicht so, aber im Quelltext ist es). Mach das weg und es geht.



  • Danke klappt jetzt.



  • Irgendwie hab ich nur Fehler.Compillieren geht ausführen auch aber
    Wenn man Nein also 2 tippt geht das programm einfach aus obwohl er
    eigentlich noch auf eine Text eingabe warten soll.
    Weiß jemand rat?
    gier der

    printf("Wollen sie das Instalation programm ausfhren?\n1 Ja oder 2 Nein\nBitte Zahl eingeben:");
    scanf("%d",&a);
    if (a==1)
    {
    Main();
    }

    Hier(V) ist das Problem ich weiss nur nicht welches.

    else
    printf("Installation abgebrochen!");
    getch();

    }



  • Hi, ich hab dir zwei tips:
    1. Ist der Name main reserviert, also taufe deine "void Main" funktion um.
    2. Ist deine main funktion nicht

    void main(){}
    

    sondern

    int main(){}
    

    wie du richtig geschrieben hast, aber dann musst du auch integer zurückgeben, also so

    getch()
    return 0;
    }
    

    Gruss



  • Das problem ist alles in der main.Es ja der qelltext von oben und zwar
    int main()
    {
    int a;

    printf("Wollen sie das Instalation programm ausfhren?\n1 Ja oder 2 Nein\nBitte Zahl eingeben:");
    scanf("%d",&a);
    if (a==1)
    {
    Main();
    }
    else
    printf("Installation abgebrochen!");
    getch();
    return 0;
    }

    und eben das klappt nicht.Leider auch nicht mit return 0;.
    Er gibt nicht das aus von else.



  • Also ich hab dein Programm mal ein bisschen geaendert. Jetzt funktioniert es.

    #include <stdio.h> 
    
    void fertig() 
    { 
    	FILE* datei1; 
    	datei1=fopen("hallo.txt","w+"); 
    	fprintf(datei1, "Willkommen beim Programm.\nBitte schreiben sie an mir fall Fehler\nauftreten sollten.\nEmail: ** \nDanke."); 
    	close(datei1);
    	printf("Komponenten werden installiert.\n"); 
    	printf("Fertig!\n");
    } 
    
    void myMain() 
    { 
    	FILE* datei; 
    	datei=fopen("hallo.txt","w+"); 
    	fprintf(datei,"-------------------------------------------"); 
    	fclose(datei);
    	fertig(); 
    }
    
    int main() 
    { 
    	int a; 
    
    	printf("Wollen sie das Instalation programm ausfuehren?\n1 Ja oder 2 Nein\n");
    	scanf("%d",&a);
    
    	if (a==1) 
    	{ 
    		myMain(); 
    	} 
    	else 
    		printf("Installation abgebrochen!\n"); 
    
     	return 0;
    }
    

    Wieso hast du 2 Dateien geoeffnet, und die beiden Pointer gleich benannt?
    Naja ich hab jedenfalls einen umgenannt, und nach den hineinschreiben geschlossen.
    So funktioniert das, und sieht auch noch ganz gut aus. 🙂

    mfg LastManStanding



  • Wenn man nein sagt zeig er aber nicht "Installation abgebrochen!".
    Das ist das Problem.Und ich hab jetzt noch ein anderes problem bemerkt und zwar:
    Der wenn man etwas addieren will heiß es doch so:

    a+b;
    oder
    b=c+a

    Aufjeden fall das krig ich auch nicht hin. Er sagt einfach das über der linie ein Fehler ist.Da steht nun mal eins von den beiden.Auch mit der ausgabe hab ich nen Problem da sagt er mir ich hätte nicht die variable a dementsprechend mit int eingebaut.
    Uff irgendwie will mich der Compiler ärgern. 😞



  • Also das was ich oben hingeschrieben habe funktioniert wunderbar!
    Auch das "Installation abgebrochen!" wird angezeigt.

    Mit was kompilierst du?

    Ich hab's mit Suse Linux 9.1 un gcc 3.3.3 probiert...

    mfg LastManStanding



  • Ich kompiliere unter windows mit Dev-C++.
    Und unter Linux(dieses prog ist aber unter windows)mit Kdevelop.

    Hier mit dem addieren da sagt er das: parse error before `else'
    also wenn ich das richtig verstehe ist über else was falsch.

    d = d + c;
    else

    es ist in void main.Inzwischen hab ich alle Bibliotheken die ich kenne ein gebaut.
    d und c sind declariert mit int.c=1 und d=0



  • man kann beim addieren auch so schreiben:
    a+=d;
    das selbe wie
    a = a + d;
    das geht auch bei *...
    a /= d;
    usw.
    es waere auch super waenn due die if verzweigug IMMER so schreiben würdest

    if(irgendwas){
       //irgendein wichtiger code
    }else{//else zu: (irgendwas)
       //noch ein wichtiger code
    }//end if
    

    also ich meinen mit den klammern so vermeidest du fehler als waenn du schreibst

    if(irgendwas)
       //irgendein wichtiger code NUR EINE ZEILE LANG
    else//else zu: (irgendwas)
       //noch ein wichtiger code NUR EINE ZEILE LANG
    

    fide ich zumindest



  • das ist das problem.
    Danke



  • ansonsten darf vor else kein Semikolon stehen



  • if (bedingung)
       einefunktion();
    else
       einefunktion();
    
    if (bedingung)
    {
       einefunktion();
       nocheinefunktion();
    }
    else
    {
       einefunktion();
       nocheinefunktion();
    }
    


  • Endlich gelöst!

    mfg LastManStanding

    Uebrigens: Hab gerade meine Version in Dev-C++ getestet. Laeuft genauso!



  • @c.rackwitz find ich nicht so gut den stil find ich irgedwie unübersichtlich



  • stil? mir egal.
    die möglichkeiten gibt es jedenfalls. naja, man kann noch mischen aber ich wollts nur zeigen.

    Mahlzeit hat da irgendwas von nicht-semikolon vor dem else gesagt und mir war das unklar.



  • ja das mit dem das kann man mischen stimme ich dir vollkommen zu aber stil ist -finde ich- ziemlich wichtig


Log in to reply