mein erstes c prog



  • Hallo @all foren member und andere^^,

    ich hab es endlich geschafft mit nen c compiler / linker zubesorgen und meine berufliche karriere im alter von 15 jahren als programmierer einzuschlagen ... nein quatsch bei seite ich hab da ma ne frage.^^

    Also ich hab mein erstes prog geschrieben nicht viel und auch nicht groß:

    #include <stdio.h>
    int main()
    {
      printf("Man bin ich gut!");
    }
    

    so das war er auch schon nen bissel egoistisch vll. aber das spielt keine rolle.
    wenn ich es zur ausführung bringe erscheint kurz nochnichtmal 1sek der text in einem dos fenster.
    meine frage ist nun: wie kann ich diesen text länger anzeigen lassen. weil es ja nicht sinn der sache ist einen text für den benuzter unerkennbar kurz anzuzeigen.
    und da fällt mir auch noch meine 2frage ein. Warum ...int main()... in meinem buch steht das es void heißen muss doch da erscheint im log. zeile 3 "main" must return "int" und
    Build error

    Danke schonmal allen die mir hier weiterhelfen können

    mfg Benedict Ernst



  • Probiers mal damit:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
       printf("Man bin ich geil");
       system("PAUSE");
       return 0;
    }
    

    Der Standard schreibt vor, dass main einen int-Rückgabewert haben muss. Es gibt eigentlich gar kein void main. 😉
    Und system("PAUSE") ruft ein Programm auf, das dein Programm anhält.



  • warum guckt niemand in die Konsolen FAQ?



  • #include <stdio.h>
    
    int main() 
    { 
      printf("Man bin ich gut!");
      return(0); 
    }
    

    ist richtig!
    -> system("PAUSE"); ist ein Sch***!
    Du siehst die dos box nur ganz kurz da es kein Haltepunkt im Programm/Code gibt der sagt: "mach hier mal ne Pause"!
    Führ das ganze mal in der command line aus(in der dos box)!
    Wenn du weist wie das geht.

    Für den Anfang kannst aber auch bloß ein

    getchar();
    

    oder getch(); einfügen(Wobei du bei getch(); conio.h inkludieren musst).

    mfg hohesC



  • Also: Wie bereits bemerkt, ist nichts am ursprünglichen Programm falsch. Allerdings haben Konsolenprogramme folgende Eigenschaft: Führt man die Executable nicht direkt von der Konsole aus, sondern vom Explorer oder was auch immer, wird ein Konsolenfenster intialisiert, dann läuft das Programm runter. Und wenn zwischendurch keine Benutzereingabe erwartet wird, wird die Konsole geschlossen, nach dem das Programm zu Ende ist. Der Text wird schon ausgegeben das passiert aber halt schneller als du schauen kannst.

    Hättest du dein Programm also klassisch aus der Eingabeaufforderung aufgerufen, hätte das Programm "Man bin ich gut!" oder was auch immer ausgegeben, danach wärst du wieder in Eingabeaufforderung. Das Programm an sich verlangt aber keinerlei Interaktion, also läuft es einfach runter, danach ist es beendet. So einfach.
    Wenn du willst, dass das Programm erst nach einem Tastendruck beendet ist, versuchs mit get() oder system("pause").



  • Des gleiche Problem habe ich auch nur helfen die hier beschriebenen Antworten nicht immer! Ich mache es meistens mit

    getchar();
    return 0;
    

    oder mit system("pause");

    Aber bei diesem Synthax hilft irgendwie garnetz:

    # include <stdio.h>
    # include <stdlib.h>
    
    main()
        {
        int z;
        int n;
        int a;
        int x;
    
        printf( "Zu teilende Zahl: ");
        scanf( "%d", &z);
        printf( "Teiler: ");
        scanf( "%d", &n);
        printf( "Anzahl Nachkommastellen: ");
        scanf( "%d", &a);
    
        x = z/n;
    
        printf( "Ergebnis = %d.", x);
        for( ; a > 0; a = a-1)
            {
                 z = 10*(z - n*x);
                 if( z == 0)
                     break;
                 x = z/n;
                 printf( "%d", x);
            }
    
        printf( "\n");
    
    }
    

    Doch hier hilft die Lösung von YASC:

    void wait () 
    { 
        setvbuf(stdin,NULL,_IONBF,0); 
        setvbuf(stdin,NULL,_IOFBF,BUFSIZ); 
        getchar(); 
    } 
    
    main() 
        { 
        int z; 
        int n; 
        int a; 
        int x; 
    
        printf( "Zu teilende Zahl: "); 
        scanf( "%d", &z); 
        printf( "Teiler: "); 
        scanf( "%d", &n); 
        printf( "Anzahl Nachkommastellen: "); 
        scanf( "%d", &a); 
    
        x = z/n; 
    
        printf( "Ergebnis = %d.", x); 
    
        for( ; a > 0; a = a-1) 
            { 
                 z = 10*(z - n*x); 
                 if( z == 0) 
                     break; 
                 x = z/n; 
                 printf( "%d", x); 
            } 
    
        printf( "\n"); 
        wait(); 
        }
    

    Habs grad erst in dem anderen Thread gelesen!



  • void wait () 
    { 
        setvbuf(stdin,NULL,_IONBF,0); 
        setvbuf(stdin,NULL,_IOFBF,BUFSIZ); 
        getchar(); 
    }
    

    Hm... Naja, wers nötig hat... 😉



  • BloodLord schrieb:

    Hm... Naja, wers nötig hat... 😉

    wo ist das problem?

    man hat sowieso eine sammlung von nützlichen funktionen die man immer wieder braucht, und das ist eine. sehe da kein problem und es ist etwas das sich auszahlt.



  • Shade Of Mine schrieb:

    man hat sowieso eine sammlung von nützlichen funktionen die man immer wieder braucht, und das ist eine. sehe da kein problem und es ist etwas das sich auszahlt.

    Okay, hast ja Recht. War da grade mal wieder so am "alles schlecht machen". Ich werde jetzt solche kleinen Funktionen sammeln, ne Bibliothek draus machen und sie veröffentlichen...


Anmelden zum Antworten