warum funktioniert das nicht??



  • Hallo zusammen,

    ich bin vor kurzem in c eingestiegen indem ich ein Tutorial durcharbeite, folgende 2 Probleme sind dabei aufgetaucht.

    erstens:

    Warum wird bei dem folgenden Code die Eingabe nicht mit # abgebrochen sonder erst wenn ich # eintippe und dann mit enter bestätige.

    #include <stdio.h>
    
    int main()
    {
        FILE *datei;
        char dateiname[25];
        char zeichen;
        char abbruch = '#';
    
        printf("Bitte Dateiname eingeben: ");
        scanf("%s",dateiname);
    
        datei = fopen(dateiname,"w+");
    
        if(datei==NULL)
        {
                       printf("\n\nDie Datei konnte nicht geöffnet werden!");
        }
        else
        {
            printf("\n\nText eingeben, beenden mit '#'\n\n");
            while((zeichen = getchar())!= abbruch)
            {
                           putc(zeichen,datei);
            }
            printf("\n\nDanke, das sie mich benutzt haben.");
            fclose(datei);
        }
        fflush(stdin);
        getchar();
    }
    

    zweitens:

    Beim einbinden von diesem Code werden die ersten beiden Zeilen als fehlerhaft erkannt und führt zum abbruch der Kompilierung.

    #ifndef_meine_datei 
    #define_meine_datei
    
    #define Ausgabe printf("\nHallo Welt");
    
    #define zeigeText(A) printf(A);
    
    #endif
    

    Erst wenn ich es in folgenden Code umwandle, funktioniert es.

    #if !_meine_datei 
    //#define_meine_datei
    
    #define Ausgabe printf("\nHallo Welt");
    
    #define zeigeText(A) printf(A);
    
    #endif
    

    Zum kompilieren benutze ich dev-c++, liegt es vllt daran? Ist der code im Tutorial einfach nur falsch oder ...??



  • #define_meine_datei
    

    Besser:

    #define meine_datei
    

    Warum wird bei dem folgenden Code die Eingabe nicht mit # abgebrochen sonder erst wenn ich # eintippe und dann mit enter bestätige.

    Das ist so mit den Standard-Eingabe-Funktionen. Die puffern auf Terminals zeilenweise, dagegen kann man nichts tun. Siehe auch hier:
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39320.html


Anmelden zum Antworten