printf() - wie geht das???



  • Ich hätte da mal ne Frage zu printf() und cout und scanf() und cin,...

    Wie machen die dass???
    Ich meine solche befehle zur aus bzw eingabe??
    Und gibt es nicht irgendeinen Befehl zur aus- bzw. eingabe ohne eine
    headerdatei zu verwenden????

    (PS: Ich bin Anfänger und manchmal etwas schwer von Begriff, also falls wer
    ne einfache Antwort hat... 🙂 )



  • mEeX schrieb:

    Wie machen die dass???

    meinst du die vriablen parameterlisten?
    guckst du: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt_va_arg.2c_.va_end.2c_.va_start.asp

    mEeX schrieb:

    Und gibt es nicht irgendeinen Befehl zur aus- bzw. eingabe ohne eine
    headerdatei zu verwenden????

    ohne header sollte man den prototypen ganz oben in die .c-datei schreiben

    int printf(char *,...);
    


  • Eigentlich ging es mir darum, text auszugeben (eingeben)
    ohne stdio bzw. iostream.
    Habmich wohl wieder mal umständlich ausgedrückt.



  • unter dos kann man das zeichen direkt in den bildschirmspeicher schreiben.
    unter windoof: 'WriteConsoleOutputCharacter()'
    guckst du: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/base/writeconsoleoutputcharacter.asp



  • ach net, er ist anfänger und will doch nur zeichen ausgeben 🙄

    für so ziemlich alles was mit ein/ausgabe zu tun hat, musst du header inkludieren.

    cstdio:
    printf("bla bla bla");
    printf("%s ist ein string",irgendeinstring);
    fgets(irgendeinstring, 50, stdin); // 50, wenn der c string nur 50 zeichen aufnehmen kann

    iostream:
    cout << "bla bla";
    cout << "bla" << irgendeinstring;
    cin >> irgendeinstring;



  • Nein, C/C++ selbst enthält kein Mittel zur Ein-/Ausgabe. Du musst dazu Teile der Standard-Bibliothek verwenden oder eine externe Library.

    Unter C kannst du das mit der <stdio.h> anstellen.
    Unter C++ macht man es für gewöhnlich mit <iostream>

    MfG SideWinder



  • mEeX schrieb:

    Ich hätte da mal ne Frage zu printf() und cout und scanf() und cin,...

    Wie machen die dass???
    Ich meine solche befehle zur aus bzw eingabe??
    Und gibt es nicht irgendeinen Befehl zur aus- bzw. eingabe ohne eine
    headerdatei zu verwenden????

    (PS: Ich bin Anfänger und manchmal etwas schwer von Begriff, also falls wer
    ne einfache Antwort hat... 🙂 )

    C ist vom Funktionsumfang her sehr klein. Befehle zur ein und Ausgabe wie z.B. bei Basic gibt es nicht.

    Der geringe Funktionsumfang hat seinen Sinn. C wurde entwickelt um das Betriebsystem UNIX zu implementieren. So war garantiert das C erstens sehr kleine Programme erstellt und bietete noch die Möglichkeit eigene Funktionen in Form von Bibliotheken einzubinden. So war C portierbar. Man musste das Programm nur noch mit den Header Dateien für die neue Hardware compilieren.



  • Also gar kein Befehl oder so??

    Vielleicht ne doofe Frage, aber
    wie macht dass dann stdio??

    Kann man nicht irgendie auf den VideoRAM oder so zugreifen, bei Basic
    konnte man das mit irgendwelchen Variablen oder Zeigern, weiß auch nicht
    schon lange her dass ich sowas gemacht habe (glaub mit &HA000)



  • Nein so geht das nicht, und die <iostream> darf es machen wie sie es will. Ausgabe in die Konsole ist nicht Pflicht sondern bei den meisten Implementationen so (na gut bei jeder ;)).

    Da eine Standard-Library immer für ein gewisses System geschrieben wird darf die Implementation ganz weit unten tatsächlich auf betriebssystemabhängige Funktionen zugreifen - irgendwo wird also ein WriteConsoleOutput() zu finden sein (ganz weit tief unten).

    Ja und WriteConsoleOutput() ist eine WinAPI-Funktion und ja die darf wirklich auf die Konsole zugreifen weil das System ihren eigenen Funktionen vertraut *g*

    MfG SideWinder



  • mEeX schrieb:

    Also gar kein Befehl oder so??

    Vielleicht ne doofe Frage, aber
    wie macht dass dann stdio??

    Kann man nicht irgendie auf den VideoRAM oder so zugreifen, bei Basic
    konnte man das mit irgendwelchen Variablen oder Zeigern, weiß auch nicht
    schon lange her dass ich sowas gemacht habe (glaub mit &HA000)

    Klar kannst du das machen.
    Wenn du alle Adressen weißt und dir dein Betriebssystem erlaubt einfach irgendwo im Speicher rumzuschreiben, dann geht das schon.
    Allerdings finde ich es um einiges einfacher eine Headerdatei einzubinden und eine Codezeile mit einem einfachen printf() zu schreiben als 100 Zeilen Zahlensalat.


Log in to reply